Java 集合理解(List;Set;Map)
来源:互联网 发布:如何进行会员数据分析 编辑:程序博客网 时间:2024/06/05 15:02
一、ArrayList 和 LinkedList的区别
ArrayList 和 LinkedList 是两个集合类,用于存储一系列的对象引用。
1、ArrayList是实现了基于动态数组的数据结构,内部是使用可增长数组实现的。
LinkedList是基于链表的数据结构 ,使用双链表实现的。
2、对于随机访问,ArrayList优于LinkedList,因为LinkedList要移动指针。
3、对于新增和删除,LinkedList优于ArrayList,因为ArrayList要移动数据。
ArrayList 更适合读取数据,LinkedList 适合于添加或删除数据。
二、HashSet,TreeSet 和 LinkedHashSet 的区别
Set 不允许包含相同的元素,如果试图把两个相同的元素加入同一个集合中,add 方法返回false。
Set 判断两个对象是否相等,使用 equals 方法,而不是使用 == 运算符。
1、HashSet
不能保证元素的排序
不是同步的
集合元素可以是null,但只能放入一个null?
根据该对象的hashCode() 方法得到该对象的 hashCode值,然后根据 hashCode 值来决定该对象在HashSet 中存储位置。
2、LinkedHashSet
以插入顺序保存。
LinkedHashSet 在迭代访问Set 中的全部元素时,性能比 HashSet 好,但是插入时性能稍微逊色于 HashSet。
3、TreeSet
TreeSet 是 SortedSet 接口的唯一实现类,TreeSet 可以确保集合元素处于排序状态。
TreeSet 支持两种排序方式,自然排序和定制排序。
自然排序:使用要排序元素的 CompareTo (Object obj) 方法来比较元素之间大小关系,然后将元素按照升序排序。
Java提供了一个Comparable接口,该接口定义了一个compareTo (Object obj) 方法,该方法返回一个整数值,实现了该接口的对象就可以比较大小。
obj1.compareTo(obj2)
返回0:相等;返回整数,大于;返回负数,小于。
如果我们将两个对象的equals 方法总是返回true,则 compareTo 应该返回0 。
三、HashMap,HashTable,LinkedHashMap 和 TreeMap
Java 为数据结构中的映射定义了一个接口 java.util.Map;它有以上四个实现类。
Map主要用于存储键值对,根据键得到值,因为不允许键重复,允许值重复。
1、HashMap
它是一个最常用的Map,它根据键的 HashCode值存储数据,根据键可以直接获取它的值,具有很快的访问速度,遍历时,取得数据的顺序是完全随机的。
HashMap 最多只允许一条记录的键为Null。
HashMap 不支持线程的同步,即任一时刻可以有多个线程同时写 HashMap ;可能会导致数据不一致。
如果需要同步,可以用Collections 的 synchronizedMap方法使 HashMap 具有同步的能力,或者使用 ConcurrentHashMap。
2、HashTable
Hashtable 和 HashMap 类似,它继承自 Dictionary 类,不同的是:它不允许记录的键或者值为空;
它支持线程的同步,即任一时刻只有一个线程能写 Hashtable,因此也导致了 Hashtable 在写入时会比较慢。
3、LinkedHashMap
LinkedHashMap 是 HashMap 的一个子类,保存了记录的插入顺序,在用 Iterator 遍历 LinkedHashMap 时,先得到的记录肯定是先插入的。
4、TreeMap
TreeMap 实现 SortMap 接口,能够把它保存的记录 根据键排序,默认是按键值的升序排序。
在用Iterator 遍历 TreeMap 时,得到的记录是排过序的。
- Java 集合理解(List;Set;Map)
- java 中的 set以及集合,map,list等的理解
- java集合 set list map
- [java]集合 list set map
- java集合 list set map
- java集合set,list、map
- Java list-set-map集合
- java集合(list,set,map)
- java 集合 List Map Set
- java Map set list 理解
- Java集合(list,Set,Map)集合
- JAVA集合的认识[Set,List,Map]
- Java集合List,Set,Map基础
- java集合map,set,list区别
- java集合map,set,list区别
- java中的Collection集合 List Set Map
- java集合总结-List/Set/Map/Queue
- java集合框架(List、Set、Map)
- sessionStorage和localStorage
- 无刷新上传文件
- 关于线程volatile关键字
- C语言第7课 指针
- python高级特性之迭代
- Java 集合理解(List;Set;Map)
- 正则表达式
- 鸡尾酒会问题(Cocktail Party Problem)和程序实现
- JS:this用法
- java4种线程池的使用
- Java中的WebSocket(上)
- 如何用 BandiFix 修改损坏的AVI文件视频
- 页面报错
- 初探Okhttp3+Retrofit2+RXJava