集合框架
在存储信息时如果使用数组,那么必需要给出一个固定的长度,且存储空间不一定全部使用,且插入、删除操作数据时效率低下,而集合可适用于多种不同的存储方式及数据类型。
Java 集合框架提供了性能优良、使用方便的接口和类,它们都位于java.util包中
Java集合框架包含的主要内容及彼此之间的关系
Collection接口
Collection 是最基本的集合接口,一个 Collection 代表一组 Object,即 Collection 的元素, Java不提供直接继承自Collection的类,只提供继承于的子接口(如List和set)。
Collection 接口存储一组不唯一,无序的对象。
List接口
List接口常用类有ArrayList和LinkedList 存储一组有序可重复且可容纳所有类型对象,包括null的值
1.ArrayList 存储存储多个有序的数据,遍历元素和访问元素的效率高。
2.LinkedList 采用链表存储方式,插入,删除元素的效率高。(可用作堆栈和队列)
Set接口
Set接口继承Collection接口存储一组唯一不允许重复,无序的对象。
Map接口
Map接口用于处理键值映射数据,每个元素都由一个键对象和值对象组成
1.Hashtable 继承自Dictionary类,是一个线程安全,不予许出现null值的类。
2.HashMap 实现了Map接口,是一个非线程安全,键值允许出现null值的类。
ArrayList和Linkendlist的使用
//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的使用
//声明方式
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. hasNext(); 判断是否存在另一个可访问的元素。
2. next(); 返回要访问的下一个元素。
//遍历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泛型集合
使用泛型集合在创建对象时指定集合中元素的类型,从集合中取出元素时无须进行类型强制转换,如果把非指定类型存入会出现编译错误,保证了数据的安全性。
//泛型集合的声明
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().属性;
}
–资料–
Read More