集合框架:在集合框架之前时容器类,可以存储多个数据
集合框架时为表示和操作集合的一种统一的标准结构,任何集合框架都包含三种大块类容:对外的接口,接口的实现,对集合运算的算法(底层都i包含着一种数据结构的算法)存在于java.util类中
常用的框架接口规范:
list:可以重复,必须有序
set::不能重复,可以无序
map:键值对应关系
vector类:
增 add()增加到末尾
v.add(集合) 添加整个集合
v.addAll(集合) 添加集合的内容
删除 remove
改 set
查
stack
后进先出的栈(数据结构的一种)
消息的集合
建议栈使用ArrayDeque
ArrayList
未加synchroniazed 线程不安全
vector 加了同步 线程安全 性能较ArrayList低
ArrayList list=Collection.synchroniazed(new ArrayList);
常用方法参照Vector;
LinkedList:链表实现本质时双向链表 单向队列 双队列 栈的实现
线程不安全 在LinkedList类中有很多方法有相同作用 应为在此类中有很多数据结构
常用方法:链表和队列都特擅长操作头和尾
因为LinkedList实现了list所以也有get方法
解决 迭代集合操作 和删除并发异常的
在Collection中删除指定元素 remove 该方法只能删除集合中的的元素 不呢个删除迭代器线程中的方法 此时 使用迭代器中的remove方法 不能用foreach it.remove该方法会同时删除了两个线程中的元素,不会出现异常
set 唯一 可以无序
hash算法 通过一定的算法确定键值之间的关系 适用于查询,和少量的插入 需要扩容
在hashset中如何判断两个对象是否相等
1.两个对象的equals
2.两个对象的hashCode的方法返回值相等先判断1,在判断2
a.1相同,2也相同则视为同一个对象,则不保存hashbiao中
b.1不同 2相同 同槽位的链表中
对象的hashCode值决定了对象在hash表中的储存位置
LinkedHashSet底层才有哈希表和链表的算法;
哈希表保证唯一性
链表
treeSet 底层为红黑树 做范围查询
会对所储存的元素进行自然排序(从小到大)但是必须保证储存的必须时同一种数据类型
较set新增 first last最低的 和最高的
headset(t) 严格小于t
treeset的排序规则
a.自然排序:就是按照元素的升序进行排列()
实现Comparable接口中的compareto 此API 大于返回正数,等于返回零 小于返回负数
b.定制排序:实现comparator接口 中的caompare() 大于返回正数,等于返回零 小于返回负数
map以后可以做javaBean的对象 属性名 属性值,可以坐缓存(工具箱)
list