在存储信息时如果使用数组,那么必需要给出一个固定的长度,且存储空间不一定全部使用,且插入、删除操作数据时效率低下,而集合可适用于多种不同的存储方式及数据类型。
Java集合框架包含的主要内容及彼此之间的关系

Java 集合框架提供了性能优良、使用方便的接口和类,它们都位于java.util包中
Collection接口
1 2 3
| Collection 是最基本的集合接口,一个 Collection 代表一组 Object,即 Collection 的元素, Java不提供直接继承自Collection的类,只提供继承于的子接口(如List和set)。 Collection 接口存储一组不唯一,无序的对象。
|
List接口
List接口常用类有ArrayList和LinkedList 存储一组有序可重复且可容纳所有类型对象,包括null的值
1 2
| 1.ArrayList 存储存储多个有序的数据,遍历元素和访问元素的效率高。 2.LinkedList 采用链表存储方式,插入,删除元素的效率高。(可用作堆栈和队列)
|
Set接口
Set接口继承Collection接口存储一组唯一不允许重复,无序的对象。
Map接口
Map接口用于处理键值映射数据,每个元素都由一个键对象和值对象组成
1 2
| 1.Hashtable 继承自Dictionary类,是一个线程安全,不予许出现null值的类。 2.HashMap 实现了Map接口,是一个非线程安全,键值允许出现null值的类。
|
ArrayList和Linkendlist的使用
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
| //ArrayList声明方式 List list=new ArrayList(); ArrayList al=new ArrayList(); //Arraylist的添加,删除数据方式 list.add(...); list.remove(int index/Object o); //获取数组长度及数据 list.size(); list.get(int index); //判断是否存在元素 list.contains(Object o);
//LinkendList声明 List list=new LinkedList((); LinkedList li=new LinkedList(); //添加方式可指定头部和尾部的添加 list.addFirst(Object o); list.addLast(Object o); //删除也可指定头部或尾部 list.removeFirst(); list.removeLast();
|
HashMap的使用
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| //声明方式 Map map=new HashMap(); //添加数据 map.put(Object key,Object value); //根据键返回值 不存在返回null map.get(Object key); //删除元素 map.remove(Object key); //返回键或值或者键值对的集合 map.key(); map.values(); map; //判断元素是否存在 map.containsKey(Objet key); //判断集合是否存在 map.isEmpty(); //清空所有元素 map.clear();
|
迭代器 Iterator
Iterator为集合而生,用于实现集合的遍历,它隐藏了各种集合实现类的内部细节,提供了遍历集合的统一编程接口。
Collection 接口的Iterator()方法返回一个iterator,然后通过iterator接口的两个方法可实现遍历。
1 2
| 1. hasNext(); 判断是否存在另一个可访问的元素。 2. next(); 返回要访问的下一个元素。
|
1 2 3 4 5 6 7 8 9 10 11 12
| //遍历ArrayList集合 Iterator its=对象.iterator(); while(its.hasNext()){ 对象类型 对象名=(对象类型)its.next(); //根据存储对象进行类型转换 然后通过对象名进行取值}
//遍历HashMap集合 Set keys=集合名.keySet();//取出key的集合 Iterator it=keys.iterator(); while(it.hasNext()){ String key=(key类型)it.next();//取出key 集合对象类型 对象名=(集合对象类型)集合名.get(key);//根据key取出对应的值//通过对象名拿出 values}
|
Java泛型集合
使用泛型集合在创建对象时指定集合中元素的类型,从集合中取出元素时无须进行类型强制转换,如果把非指定类型存入会出现编译错误,保证了数据的安全性。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| //泛型集合的声明 List<T> list=new ArrayList<T>(); Map<K,V> map=new HashMap<K,V>();
//使用加强版的for进行遍历//List泛型集合for(T item:list){ //直接用 item进行取值 无须类型转换!}
//Map泛型集合 Set<T> keys=map.keySet(); Iterator<T> it=keys.iterator(); while(it.hasNext()){ T key=it.next(); T va=map.get(key); } //根据键和集合存储的值类型进行接收取出的键值 无须进行类型转换------------------------------------------------------------------
//利用加强版的for 取出键值对for(Map.Entry<K,V> en : map.entrySet()){ en.getKey(); en.getValue().属性; }
|
Java8特性
List转map