集合
1、队列 queue
实现方式:1)循环数组: ArrayDeque 2)链表 LinkedList 这两个类都实现了Queue接口
注:循环数组的实现方式效率高但是容量有限 ,如果对象数量没有上限则使用链表
2、集合类的基本接口:Collection接口
ArrayList 迭代:有序的 从0开始 HashSet迭代:无序的
3、使用链表的理由:尽可能的减少在列表中间插入或者删除元素所付出的代价 但是如果只有少数几个元素完全可以使用ArrayList
4、需要动态数组时,使用Vector类 ArrayList线程不同步 Vector线程同步但是同步操作开销大,所以在不需要同步时使用ArrayList
5、散列集:
hashtable 散列表 两个对象相等(equals)散列码必相同
桶数:通常设置为预计元素个数的75%~150%
装填因子:决定何时对列表进行再散列 0.75比较合理 当表中超过75%的位置已经填入元素,表自动进行散列
6、优先级队列: PriorityQueue 可以再构造其中提供比较器对象 底层:堆
堆:堆是一个可以自我调整的二叉树
使用场景:任务调度 任务以随机顺序添加到队列中,每当启动一个新的任务时,都将优先级最高(最小)的任务从队列中删除
7、映射表:map 实现类:HashMap TreeMap
entrySet keySet values 可以从集中删除但是不能添加 同时映射表中的数据也被删除