Java集合类
一、集合类(Collection):
1)用于存储对象;长度可变;存储不同类型对象;
2)集合类和数组的区别:
(1)数组长度不变;集合类可变;
(2)数组中数据都是同类型;集合类可以不同;
二、集合框架的构成和分类:
三、常用接口:
(1)List(列表):可存放重复元素,元素存取是有序的;该集合体系有索引;
(2)Set(集合):不可存放重复元素,元素存取是无序的;该集合体系没有索引;
//无序:存入和取出的顺序不一致;
(3)Map(集合):存储的为键值对;Map为双列集合,Colleciton单列集合;set集合底层为map集合;不是Collection的子接口;不能用迭代器;
四、List中常用类:
1.ArrayList:数组结构;线程不同步,增删速度慢,查询速度快。1.2jdk
2.LinkedList:链表结构;增删速度快,查询速度慢。
3.Vector:数组结构;线程同步;已被ArrayList替代;1.0jdk;colleciton—1.2jdk
Vector<String> strings = new Vector<>(); strings.add("1"); strings.add("2"); strings.add("3"); Enumeration<String> elements = strings.elements(); while (elements.hasMoreElements()) { String s = elements.nextElement(); System.out.println(s); }
五、Set中常用类:
1.HashSet:哈希表结构;线程不同步;通过hashCode和equals两方法保证数据的唯一性;如果hashCode相同才判断元素的equals;
2.LinkedHashSet;内部是一个双向链表结构;
3.TreeSet:二叉树;自然顺序排序;通过compareTo或者compare两方法保证元素唯一性;元素以二叉树形式存放;
TreeSet的两种排序:
(1)实现Comparable接口:根据compareTo的返回值排序;
(2)实现Comparator接口:根据compare的返回值排序;
//两种比较器都存在时,第2种优先于第1种;
五、Map中常用类:
1.HashTable:底层是哈希表数据结构,不可以存入null键null值;JDK1.0;线程同步,用的synchronized锁,表锁;效率低;
2.ConcurrentHashMap:是HashtTable的升级版本,线程同步,用的分段锁,提升了效率;
3.HashMap:底层是哈希表数据结构,允许存入null键null值;JDK1.2;线程不同步;效率高;
4.LinkedHashMap;
5.TreeMap:底层是二叉树结构;可以排序;JDK1.2;线程不同步;