java集合框架总结

集合框架

Collection
List
ArrayList(多线程,数组,查询快,增删慢)

为什么叫可变长度数组:默认长度10,长度超过10时new新数组50%延长,新数组的size=15,将原来的数组装进新数组,再将新元素放入

LinkList(链表,查询慢,增删快)
Vector(单线程,数组,查询慢,增删慢,被淘汰)

默认长度10,长度超过10时new新数组100%延长,新数组的size=20

Set
HashSet

大神博客
底层数据结构:数组+链表,无序不重复
如何判断是否是同一元素:先判断hashcode,再判断eqals(都相同则认为是同一元素覆盖)
源码是用hashMap实现的
HashMap的键作为HashSet的值
HashMap的value,源码中PRESENT = new Object();就是new Object()作为值

TreeSet

底层数据结构是二叉树(是否是平衡二叉树,不知道),有序不重复
如何判断是否是同一元素:compareTo(Object obj)方法返回0,即相等,就认为是同一对象就不存入
可以将元素排序(根据Comparable排序)
如何才能具有比较性
1.让元素具有比较性:存入的对象元素须实现Comparable<T>接口覆盖compareTo(Object obj)方法;
2.让容器具有比较性:定义类如MyComparator,实现Comparator接口覆盖compare(Object o1,Object o2),使用构造函数TreeSet(new MyComparator())创建容器
3.当两种情况都存在时,以2为主

Map
HashTable

底层是hash表,不能存入null键null值,线程同步的

HashMap

底层是hash表,能存入null键null值,非线程同步的
put方法如果键相同,会覆盖原有的值,并返回原有值
大神博客:HashMap? ConcurrentHashMap? 相信看完这篇没人能难住你

TreeMap

底层是二叉树,非线程同步。可用于给map集合中的键进行排序(同TreeSet)

Collections

操作集合的工具类

Arrays

用于操作数组的工具类

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值