java 集合(list、set、map)的特点
集合相关的类有一大堆,一般也只用到常用的方法增删改查,而且它它们的方法名也基本一样,所以一直都不知道什么时候用什么集合,
今天趁有空特意从网上整理资料方便日后回忆。
一、List:、有顺序以线性方式存储,可以存放重复对象
线程安全方法:List list = Collections.synchronizedList(new LinkedList(...));
LinkedList:双向链表实现存储 索引数据慢插入数度较快 线程不安全(比安全性能好)
ArrayList:数组方式存储数据 索引数据快插入数据慢 线程不安全
Vector:数组方式存储数据 索引数据快插入数据慢 线程安全
Stack:继承自Vector,实现一个后进先出的堆栈
二、Set:无顺序,不包含重复的元素
HashSet:为快速查找设计的Set。存入HashSet的对象必须定义hashCode()。
TreeSet: 保存次序的Set, 底层为树结构。使用它可以从Set中提取有序的序列。
LinkedHashSet:具有HashSet的查询速度,且内部使用链表维护元素的顺序(插入的次序)。于是在使用迭代器遍历Set时,结果会按元素插入的次序显示。
三、Map:键必须是唯一
同步方法:Map m = Collections.synchronizedMap(new TreeMap(...));
Hashtable:基于散列表的实现 允许空键空值 线程安全
HashMap:基于散列表的实现 允许空键空值 线程不安全 (与Hashtable基本一致)
TreeMap: 基于红黑树数据结构的实现 不允许空键空值 线程不安全
WeakHashMap:改进的HashMap,它对key实行“弱引用”,如果一个key不再被外部所引用,那么该key可以被GC回收。
在除需要排序时使用TreeSet,TreeMap外,都应使用HashSet,HashMap,因为他们的效率更高。
四、SparseArray<E>:采用了二分法方式存储数据(安卓的一个集合类)
android系统建议我们用SparseArray<E>来代替HashMap<Integer, E>
SparseArray的使用基本与List一样,在些不详细解说,大家可以看http://blog.csdn.net/xyz_fly/article/details/793194
相关文章
- Java类加载器( 死磕7)
- Java 枚举类
- Java 集合List、Set、HashMap操作一(Array转List、Set排序、HashMap遍历、Set遍历、List遍历、HashMap大小长度、List打乱顺序)
- 【Java】Collection集合和Map集合(List、Set、HashMap、TreeMap)
- JAVA泛型的基本使用
- Java使用list集合remove需要注意的事项
- jstack: Java占用高CPU分析之- C2 Compiler Thread
- JAVA SSL
- 【Java】List去重 / 删除ArrayList中重复元素,保持顺序 / 提取两个list中不同的元素
- JNI开发-Java从C/C++获取List集合对象
- java.io.FileNotFoundException: E:workwork (拒绝访问。)
- Java中数组、List、Set互相转换
- Java_JDK动态代理学习笔记
- java模式:模板模式的简单理解
- Java开发 - SpringCache初体验
- Java 使用 Stream API 筛选 List
- 在 Java 中初始化 List 的五种方法
- 憋了许久,终究还是对Java集合下手了!最全List、Set、Map集合讲解,内含集合导图
- Yarn Register DNS失败报A fatal error has been detected by the Java Runtime Environment或 Failed to write
- Java 基础 list 设置一个对象的默认值