TreeSet, LinkedHashSet and HashSet 的区别 TreeSet 的主要功能用于排序, 它是无序的 (插入顺序)LinkedHashSet 的主要功能用于保证 FIFO 即有序的集合 (先进先出)HashSet 只是通用的存储数据的集合共同点三者都不是线程安全的, 如果要使用线程安全可以 collections.
ArrayList 和 LinkList 的比较
ArrayList 和 LinkedList 都不是线程安全的, 小并发量的情况下可以使用 Vector, 若并发量很多, 且读多写少可以考虑使用 CopyOnWriteArrayList.
因为 CopyOnWriteArrayList 底层使用 ReentrantLock 锁, 比使用 synchronized 关键字的 Vector 能更好的处理锁竞争的问题.
TreeSet, LinkedHashSet and HashSet 的区别
TreeSet 的主要功能用于排序, 它是无序的 (插入顺序)
LinkedHashSet 的主要功能用于保证 FIFO 即有序的集合 (先进先出)
HashSet 只是通用的存储数据的集合
共同点
三者都不是线程安全的, 如果要使用线程安全可以 collections.synchronizedSet()
不同点
HashSet 插入数据最快, 其次 LinkHashSet, 最慢的是 TreeSet 因为内部实现排序
HashSet 不保证有序, LinkHashSet 保证 FIFO 即按插入顺序排序, TreeSet 安装内部实现排序, 也可以自定义排序规则
HashSet 和 LinkHashSet 允许存在 null 数据, 但是 TreeSet 中插入 null 数据时会报 NullPointerException
TreeSet 有两种排序方式
自然排序
比较器排序
自然排序
- public class Student implements Comparable<Student>{
- @Override
- public int compareTo(Student s) {
比较器排序
- public class MyComparator implements Comparator<Student> {
- @Override
- public int compare(Student s1,Student s2) {
TreeMap 在添加, 删除, 定位映射关系上, 性能比 HashMap 要差. 适用于有序集合.
由于 Set 集合是唯一性的, 由 HashSet 类实现的 Set 集合的优点是能够快速定位集合中的元素. HashSet 类需要重新实现 equals() 方法和 hashCode() 方法.
来源: https://www.2cto.com/kf/201905/807533.html