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