在Java语言中,学好集合是非常重要的,下面简单的对集合进行总结,以便大家学习,有问题再相互交流。
集合框架图
在集合框架图中可以看出,Collection接口中主要有两个子接口,分别是List和Set。List集合的特点是元素有序、包含重复元素,Set集合的特点是元素无序、不包含重复元 素。Map 集合中存储的是键值映射关系,元素都是成对出现的。Map 接口的主要子接口有HashMap 和TreeMap 。
集合框架图
在集合框架图中可以看出,Collection接口中主要有两个子接口,分别是List和Set。List集合的特点是元素有序、包含重复元素,Set集合的特点是元素无序、不包含重复元 素。Map 集合中存储的是键值映射关系,元素都是成对出现的。Map 接口的主要子接口有HashMap 和TreeMap 。
总结
ist
有顺序有重复没有排序,set
无重复有排序,map
的key
也和set
一样。
List接口
List :
特点是元素有序、可以包含重复元素。它有两个实现类分别是:ArrayList
和LinkedList
。
ArrayList :
内部维护一个数组结构,允许对元素进行快速随机访问,但是向List
中间插入与移除元素的速度很慢。
LinkedList :
内部维护了一个双向链表结构,即通过节点之间彼此连接来实现的,每一个节点都包含前一个节点和后一个节点的引用。当一个新节点插入时,只需要修改其中保持先后关系的节点引用即可,这样的存储结构保证了LinkedList
集合在增删元素时效率非常高。
Set接口
Set
具有与Collection
完全一样的接口,因此没有任何额外的功能,不像前面的List
。实际上Set
就是Collection
只是行为不同,也就是说Set
集合并没有对Collection
接口进行扩充,只是比collection
接口要求更加严了。
Set :
存入Set
的每个元素都必须是唯一的,因为Set
不保存重复元素。加入Set
的元素必须定义equals()
方法以确保对象的唯一性。
HashSet :
为快速查找设计的Set
。存入HashSet
的对象必须定义hashCode()
。
TreeSet :
保存有序的Set,
底层为树结构。使用它可以从Set
中提取有序的序列。
LinkedHashSet :
具有HashSet
的查询速度,且内部使用链表维护元素的顺序。于是在使用迭代器遍历Set
时,结果会按元素插入的次序显示。
Map接口
Map
用于保存具有映射关系的数据,因此Map
集合里存储两组值,一组用于保存Map
里的key
,另一组用于保存Map
中的value,key
和value
都可以是任意引用类型数据,其中,作为key
的值是不允许重复的,而value
中可以出现重复。Map :
维护“
键值对”
的关联性,使你可以通过“
键”
查找“
值”
。
HashMap
就是使用对象的hashCode()
进行快速查询的。此方法能够显著提高性能。HashMap
集合是基于哈希表的Map
接口实现,并允许使用null
键null
值,但必须保证键的唯一性。
LinkedHashMap :
类似于HashMap
,但是迭代遍历它时,取得“
键值对”
的顺序是其插入次序。而在迭代访问时发而更快,因为它使用链表维护内部次序。
TreeMap :
基于红黑树数据结构的实现。查看“
键”
或“
键值对”
时,它们会被排序(
顺序由Comparabel
或Comparator
决定)
。TreeMap
的特点在于,你得到的结果是经过排序的。
Hashtable
线程安全,但是存取速度很慢,且不允许存放null
键null
值,目前基本上被hashMap
类所取代。Hashtable
有一个重要的子类Properties。
Properties:java.util.Properties; key和value都是String类型,用来读配置文件。继承自Hashtable,比 Hashtable 更严格 属性列表中每个键及其对应值都是一个字符串。常用方法 String getProperty(String?key) 和 setProperty(String key,String value); 用法:我在D盘下建了一个名为 AA.dat 的文件,文件的内容为: name=ch password=12345 执行以下程序,输出 ch,可见用 Properties 可以很方便的解析配置文件 Properties p = new Properties();p.load(new FileInputStream("D:\\AA.dat")); System.out.println(p.getProperty("name"))