Set:无序不重复 实现类(HashSet、TreeSet 、 EnumSet 都是线程不安全的)
HashSet 特点: 1.不保证元素的排列顺序
2.不是同步的
3.集合元素可以为null
4.判断两个元素相同的标准,equals方法比较相等;两个对象的hashCode()方法返回值相等。
子类LinkedHashSet
TreeSet特点:1.SortSet的唯一子类
2.元素始终处于排序状态(自然排序即升序)
3.将对象(必须实现Comparable接口,不然会报错ClassCastException)添加进TreeSet集合
4.判断对象不相等的标准:两个对象equals返回false或者是compleTo比较没有返回0
注意:当某个Set需要保持排序就用TreeSet,否则都用HashSet
EnumSet类:
List:有序可重复
LinkedList
ArrayList(线程不安全,内部数组实现,利于随机访问,不利于插入删除)
注意:Arrays中有个方法asList(Object i)可以把一个数组或者指定个数的对象转换成一个Arrays内部类的对象,它的长度是固定的,不能够执行add或者是
remove操作,否则会报UnsupportedOperationException异常。
Vector(线程安全,内部数组实现,利于随机访问,不利于插入删除)
Vector子类: Stack(栈结构,先进后出)
Map:键值对
Queue:队列 不允许随机访问队列中的元素
LinkedList(实现了List和Deque两个接口,内部链表实现,不利于随机访问,利于插入删除 )
PriorityQueue 不允许插入null元素
两种排序方式: ①自然排序(集合中元素必须实现Comparable接口)
②定制排序(传入Comparetor对象负责排序)
Conllections: 排序、查找、替换
获取线程安全实现版本
Collection c = Collection.synchronizedCollection(new ArrayList());
List list = Collection.synchronizedList(new ArrayList());
Set s = Collection.syncronizedSet(new HashSet());
Map m = Collections.syncronizedMap(new HashMap());