李林超博客
首页
归档
留言
友链
动态
关于
归档
留言
友链
动态
关于
首页
Java
正文
Java集合相关知识总结
Leefs
2020-03-17 AM
1757℃
0条
# Java集合相关知识总结 **1. List集合:有序,可以重复的集合** List list1 = new ArrayList():底层数据结构是数组,查询快,增删慢;线程不安全,效率高 List list2 = new LinkedList():底层数据结构是链表,查询慢,增删快;线程不安全,效率高 List list3 = new Vector():底层数据结构是数组,查询快,增删慢;线程安全,效率低,几乎已经淘汰了 **2. ArrayList和LinkedList的区别** ①.ArrayList实现了基于动态数组的存储结构 LinkedList是基于链表的数据结构 ②.ArrayList查询快,LinkedList增删快 **3. Array和ArrayList有什么区别?** ①.Array是Java中的数组,ArrayList是动态数组,也就是数组的复杂版本,它可以动态的添加和删除元素,被称为“集合” ②.存储的数据类型:Array只能存储相同数据类型的数据,而ArrayList可以存储不同数据类型的数据 ③.长度的可变:Array的长度是固定的,而ArrayList的长度是可变的 **4. List和Array的区别?** List是集合,Array是数组,数组可以直接使用,List是接口,需要使用实体类,arraylist数组必须制定大小,list可以自己扩充大小。 **5.List转数组和数组转List?** 数组转list,可以使用Arrays.asList(数组),例如: ```java String[] str={"test","aaa","bbb"}; List
strings= Arrays.asList(str); //注意:当数组转成list之后,list是不能执行add,remove等操作 //strings.add("ccc");//会报错 //如果想操作,则需要 List
string2=new ArrayList
(strings); string2.add("ccc"); ``` list转数组,使用list.toArray(),例如: ```java List
strs=new ArrayList
(); strs.add("aaa"); strs.add("bbb"); strs.add("ccc"); String[] strings=strs.toArray(new String[strs.size()]); ``` **6. Set:无序,不重复元素** 使用场景:去重复,对排序没有要求时 > HashSet:速度快;没有明显的保存元素的顺序;不可重复;集合元素可以为null,但只能放一个null; > > TreeSet:有序、不可重复,必须放入同样类的对象(默认会进行排序) > > LinkedHashSet:有序、先进先出、不可以重复,因为底层采用链表和哈希表的算法。链表保证元素的添加顺序,哈希表保证元素的唯一性 **7.HashSet、TreeSet、LinkedHashSet的区别?** ①需要速度快的集合,使用HashSet ②需要集合有排序功能,使用TreeSet ③需要按照插入的顺序存储集合,使用LinkedHashSet jdk1.7及以下:Hashset是无序的,LinkedHashSet是怎么存怎么取,treeset有默认排序(comparable自然排序接口或comparator比较器接口) jdk1.8及以上:Hashset和treese都是有序的,HashSet的排序方式是散列排序(自身特殊的排列方式);LinkedHashSet是怎么存怎么取,treeset有默认排序(comparable自然排序接口或comparator比较器接口) 共同点: 1、都不允许元素重复 2、都不是线程安全的类 **8. HashMap、linkedMap与treeMap的区别** ①在Map中插入、删除和定位元素,HashMap是最好的选择 ②需要集合有排序功能,使用TreeMap更好 ③需要按照插入的顺序存储集合,使用LinkedHashMap **9.HashMap和HashSet区别?** | HashMap | HashSet | | ------------------------------------------------------ | ------------------------------- | | 实现了Map接口 | 实现了Set接口 | | 存储键值对 | 存储对象 | | 调用put()向map中添加元素 | 调用add()向set中添加元素 | | HashMap相对于HashSet较快,因为它是使用唯一的键获取对象 | HashSet较HashMap来说比较慢 | | HashMap使用key计算hashcode | HashSet使用成员对象计算hashcode | **10. List、Set、Map之间的区别?** | List | Set | Map | | -------------------------------------- | ------------------ | -------------------------------------- | | 可允许重复元素 | 不可允许重复元素 | 键值对存储,键必须唯一,值可以重复 | | 可以插入多个null元素 | 只允许一个null元素 | 键只允许一个null,值可以允许有多个null | | 有序的容器,插入的顺序和输出的顺序一样 | 无序容器 | 无序容器 | **11. ArrayList集合加入一万条数据,应该怎么提高效率** ArrayList的默认初始容量为10,要插入大量数据的时候需要不断扩容,而扩容是非常影响性能的。所以,我们可以直接在初始化的时候就设置ArrayList的容量,这样就可以提高效率了。 *附:参考文章连接地址* *https://blog.csdn.net/weixin_42687829/article/details/88200902*
标签:
Java
,
JavaSE
非特殊说明,本博所有文章均为博主原创。
如若转载,请注明出处:
https://www.lilinchao.com/archives/736.html
上一篇
Redis持久化操作
下一篇
SpringBoot常用注解知识总结
取消回复
评论啦~
提交评论
栏目分类
随笔
2
Java
326
大数据
229
工具
31
其它
25
GO
47
标签云
HDFS
容器深入研究
排序
高并发
Kafka
GET和POST
随笔
Http
数学
Stream流
nginx
Spring
Hive
JVM
DataX
队列
Elastisearch
MyBatis-Plus
Git
Beego
Java阻塞队列
BurpSuite
前端
Elasticsearch
散列
算法
Scala
数据结构和算法
RSA加解密
稀疏数组
友情链接
申请
范明明
庄严博客
Mx
陶小桃Blog
虫洞