Collection: List; set; map;
List: ArrayList数组; LinkedList;链表
Set: HashSet(LinkedHashSet); TreeSet二叉树;
Map: HashMap(无序唯一); TreeMap(有序唯一);
Collection接口:存储一组不唯一,无序的对象;
List接口:存储一组不唯一,有序(插入顺序)的对象;
Set接口:存储一组唯一,无序的对象;
Map接口:存储一组键值对象,提供key-value的映射;
List特有的方法:
增add()
删 remave()
查:getfirst()//获取头
Getlast()//获取尾
ArrayList:有序不唯一
实现了长度可变的数组,在内存中分配连续的空间。
优点:遍历和查找元素效率比较高
缺点:添加和删除元素效率比较低
LinkedList::有序不唯一
采用链表存储方式。
优点:插入和删除元素效率比较高
缺点:遍历和查找元素效率比较低
LinkedList特有的方法:
HashSet:无序 唯一
采用Hashtable哈希表存储结构。
优点:添加,查询,删除速度快
缺点:无序
LinkedHashSet:采用哈希表存储结构,同时使用链表维护次序
优点:有序(添加顺序)
TreeSet:有序唯一
采用二叉树(红黑树)存储结构。
优点:有序,比List速度快
缺点:没有HashSet快
TreeSet要求你提供排序规则,TreeSet中的元素需要实现比较接口(conparable)。
注意:
1,Set集合踢出重复元素,如果是引用类型需要重写HashCode和equals方法。
2,Set相对于List而言没有下标,没有get()方法。
Map:
Key-value键值对方式存储数据。
Key:唯一,无序
Value:不唯一,无序
子类:HashMap,TreeMap,LinkedHashMap,HashTable
Map方法:
增 put(k,v)
删 remove
Contains//查找
三种循环
//获取key
//获取value
//获取keyvalue
// 获取key;
Set d = c.keySet();
// 获取value
Collection v = c.values();
// 循环key
for (Integer f : d) {
Student a = c.get(f);
System.out.println(a);
}
//循环value
for(Student g:v){
System.out.println(g);
}
//返回对象的集合
Set