12.1集合类概述
java.util包中提供了集合类,数组类与集合类不同的是:数组类的长度是固定的,而集合类的长度是可变的;数组用来存放基本类型的数据,集合类用来存放对象的引用。常用的集合有List集合,与Set集合和Map集合,其中List集合与Set集合继承了Collection接口,各接口还提供了不同的实现类。
12.2Collection接口
Collection 接口是层次结构中的根接口,构成 Collection的单位称为元素。Collection接口通常不能直接使用,但该接口提供了添加元素、删除元素、管理数据的方法。由于List 接口与 Set 接口都继承
Lis
了Collection 接口,因此这些方法对List集合与Set集合是通用的。
12.3List集合
List集合包括List口List口的所有实现类。List元素许重复,各元素的顺序就是对象插入的顺序。类似 Java 数组,用户可通过使用索引(元素在集合中的位置)来访问集合中的元素。
12.3.1List接口
List接口继承了 Collection 接口,因此包含 Collection 接口中的所有方法。此外,List 接口还定义了以下两个非常重要的方法:
get(int index):获得指定索引位置的元素。
set(int index,Object obj):将集合中指定索引位置的对象修改为指定的对象。
12.3.2List接口的实现类
List 接口的常用实现类有ArrayList类(查找)与LinkedList 类(增:add,删:remove,改;set获取:get),简述如下:
日 ArrayList 类实现了可变的数组,允许保存所有元素,包括null,并可以根据索引位置对集合进行快速的随机访问。缺点是向指定的索引位置插入对象或删除对象的速度较慢。
LinkedList类采用链表结构保存对象。这种结构的优点是便于向集合中插入和删除对象。需要
向集合中插入、删除对象时,使用 LinkedList 类实现的 List集合的效率较高;但对于随机访问集合中的对象,使用 LinkedList 类实现 List 集合的效率较低。
使用Lst集合时通常声明为List类型,可通过不同的实现类来实例化集合。
12.4Set集合
Set集合中的对象不按特定的方式排序,只是简单地把对象加入集合中,但 Set 集合中不能包含重夏对象。Set集合由Set接口和set接口继承了Collection接口,因此包含Colletion接口的所有方法。
Set 接口常用的实现类有HashSet类(散列集合 )与TreeSet类(树集合)
HashSet 类实现 Set 接口,由哈希表(Hashcode)(实际上是一个HashMap实例)支持。它不保证 Set 集合的迭代顺序,特别是它不保证该顺序恒久不变。此类允许使用 null 元素。
TreeSet 类不仅实现了 Set 接口,还实现了java.util.SortedSet接口,因此 TreeSet 类实现的 Set集合在遍历集合时按照自然顺序递增排序,也可以按照指定比较器递增排序,即可以通过比较器对用 TreeSet 类实现的 Set集合中的对象进行排序。
contains();是否存在
.hasNext();判断是否有下一个元素
Next();拿去下一个
12.5Map集合
Map 集合没有继承Collection 接口,其提供的是key到 value 的映射。(键值映射)Map 集合中不能包含相同的 key,每个 key 只能映射一个value。key还决定了存储对象在映射中的存储位置,但不是由 key 对象本身决定的,而是通过一种“散列技术”进行处理,产生一个散列码的整数值。散列码通常用作一个偏移量,该偏移量对应分配给映射的内存区域的起始位置,从而确定存储对象在映射中的存储位置。Map集合包括 Map 接口以及 Map 接口的所有实现类。
12.5.1Map接口
Map接口提供了将key映射到值的对象。一个映射不能包含重复的 key,每个 key 最多只能映射到一个值。(键不可重复,值可重复)。
put(K key,V value) 添加
containsKey(Objeck Key) 查找是否存在某个键
containsValue(Objeck Value) 查找是否存在某个值
get(Objeck Key) 用键获取值
keySet() 返回所有键的set集合
valuefa() 返回所有值的collection集合
12.5.2Map接口的实现类
Map 接口常用的实现类有 HashMap 类和 TreeMap 类,简述如下:
HashMap 类是基于哈希表的 Map 接口的实现,此实现提供所有可选的映射操作,并允许使用
hSet null 值和null 键,但必须保证键的唯一性。HashMap类通过哈希表对其内部的映射关系进行快速查找。此类不保证映射的顺序,特别是它不保证该顺序恒久不变。
TreeMap 类不仅实现了 Map接口,还实现了java.util.SortedMap接口,因此集合中的映射关系具有一定的顺序。但在添加、删除和定位映射关系时,TreeMap 类比 HashMap类性能稍差。由于TreeMap 类实现的Map集合中的映射关系是根据键对象按照一定的顺序排列的,因此不允许键对象是 null。
建议使用HshappahMapap和删射关系效率更高。可以通过HashMap类创建Map集合,当需要顺序输出时,再创建一个完成相同映射关系的 TreeMap 类实例。