java集合

来源:互联网 发布:mac魅可 编辑:程序博客网 时间:2024/06/03 17:07

数组的特点是长度固定,只能存储基本类型的值和对象。集合的特点是长度可变,只能存储对象。Java集合主要分为:Set 、List、Map三种体系,其中set代表的是无序不重复的集合,list代表是有序可重复的集合,map代表的是具有映射关系的集合。

Collection是Set 、List、Queue的父接口,Set 、List、Queue是子接口,其常用的典型实现类分别有:HashSet、ArrayList、Vector。HashSet、ArrayList 不是同步的,线程不安全,Vector在JDK1.0起就出现,比较古老,是线程安全的,但是一般尽量避免使用。可以利用Collections工具将ArrayList包装成线程安全的。ArrayList、Vector内部以数组的方式保存集合中的元素,不指定长度时,默认为10,可自动重新分配数组的长度,随机访问集合元素性能好,LinkedList内部以链表的方式保存集合中的元素,既有List接口的方法,又有队列、栈的方法,随机访问数据的性能差,插入删除元素时性能好。使用上需注意:如果需要遍历集合中元素时,ArrayList、Vector用随机访问方法(get)来获得访问数据,LinkedList用迭代器;如果需要经常进行插入和删除元素的操作,最好用LinkedList,因为ArrayList、Vector需要经常重新分配内部数组的大小,其时间开销远远大于LinkedList,性能会降低。

JDK1.5后,Java又增加了Queue体系集合,代表队列集合。其常用的实现类有LinkedList、PriorityQueue。

Map的常用实现类有HashMap、HashTable,类似与ArrayList、Vector,其中HashMap是线程不安全的,但可通过Collections工具包装成线程安全的,Hashtable是线程安全的,且在JDK1.0起就出现,比较古老(从命名方式未遵从驼峰法也可窥见),一般避免使用。


Properties是Hashtable的子类,用来处理Window中的属性文件(.ini文件)。可以把Map对象和属性文件关联起来,既可以将Map对象写入属性文件,也可将属性文件中属性名=属性值加载到Map对象中。通常属性文件中的属性名和属性值都只能是字符串类型。


Collections是java提供的,用来操作Set、List、Map集合的工具类。Java推荐使用的HashSet、ArrayList、HashMap都是线程不安全的,Collections提供了将集合设置为不可变(只读)、对集合对象实现同步控制方法,还可以对集合元素进行排序、查询和修改等操作。

原创粉丝点击