集合和映射
1.集合入门
集合是若干用途、性质相同或相近的“数据”组合。
Java集合中只能保存引用类型的数据,实际上存放的是对象的引用,而非对象本身,集合中元素相当于引用类型变量,集合中元素数目可以动态改变。
从体系上讲,集合类型可以归纳为三种:
集(Set)
Set集合中不区分元素的顺序,不允许出现重复元素。
列表(List)
List集合区分元素的顺序,且允许包含重复元素。
映射(Map)
映射中保存成对的“键-值” 信息,映射中不能包含重复的键,每个键最多只能映射一个值。
2.java.util.Collection接口是描述Set和List集合类型的根接口,其中定义了有关集合操作的普遍性方法
3.Set和List接口
java.util.Set和java arraylist用法java.util.List分别描述前述的集和列表结构,二者均为Collection的子接口。
List接口规定使用者可以对列表元素的插入位置进行精确控制,并添加了根据元素索引来访问元素等功能,接口中新添加了相应方法。
4.列表:ArrayList类、Vector类、Stack类
1>ArrayList
java.util.ArrayList类实现了List 接口,用于表述长度可变的数组列表。
ArrayList列表允许元素取值为null。除实现了List 接口定义的所有功能外,还提供了一些方法来操作列表容量的大小
2>Vector
java.util.Vector类实现了List接口,描述的也是可变长度对象数组。Vector是同步/线程安全的,运行效率要低一些,主要用在在多线程环境中,而ArrayList则相反。
3>Stack
java.util.Stack类继承了Vector类,对应数据结构中以“后进先出”(Last in First out, LIFO)方式存储和操作数据的对象栈。
5.Iterator接口
java.util.Iterator接口描述的是以统一方式对各种集合元素进行遍历/迭代的工具,也称“迭代器”。
允许在“遍历”过程中移除集合中的元素。
6.集:HashSet类、TreeSet类
1>HashSet
java.util.HashSet类实现了java.util.Set接口,描述典型的Set集合结构。
HashSet中不允许出现重复元素,不保证集合中元素的顺序。
HashSet中允许包含值为null的元素,但最多只能有一个。
2>TreeSet
java.util.TreeSet类也实现了java.util.Set,它描述的是Set的一种变体——可以实现排序功能的集合。
在将对象元素添加到TreeSet集中时会自动按照某种比较规则将其插入到有序的对象序列中,以保证TreeSet集合元素组成的对象序列时刻按照“升序”排列。
7.映射:HashMap类、Hashtable类、TreeMap类
1>HashMap
java.util.HashMap类实现了java.util.Map接口,该类基于哈希表实现了前述的映射集合结构。
HashMap结构不保证其中元素(映射信息)的先后顺序,并且允许使用null“值”和null“键”。
当集合中不存在当前检索的“键”所对应的映射值时,HashMap的get()方法会返回空值null,而不会运行出错。
2>Hashtable
java.util.Hashtable与HashMap作用基本相同,也实现了Map接口,采用哈希表方式将“键”映射到相应的“值”。
Hashtable与HashMap的差别:
A.Hashtable中元素的“键”和“值”均不允许为null,而HashMap则允许。
B.Hashtable是同步的,即线程安全的,效率相对要低一些,适合在多线程环境下使用;而HashMap是不同步的,效率相对高一些,提倡在单线程环境中使用。
C.Hashtable与HashMap的用法格式完全相同。
3>TreeMap
java.util.TreeMap类提供将Map映射中的元素按照“键”进行升序排列的功能,其排序规则可以是默认的按照“键”的自然顺序排列,也可以定制其排序规则。
向TreeMap映射中添加的元素“键”所属的类必须实现Comparable接口。
8.总结
因其对元素的类型及数目不做严格限制,且可以提供灵活、多样的访问方式,在实际开发中,集合的应用比数组更为普遍
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论