李林超博客
首页
归档
留言
友链
动态
关于
归档
留言
友链
动态
关于
首页
Java
正文
Java集合相关知识总结
Leefs
2020-03-17 AM
1758℃
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://lilinchao.com/archives/736.html
上一篇
Redis持久化操作
下一篇
SpringBoot常用注解知识总结
取消回复
评论啦~
提交评论
栏目分类
随笔
2
Java
326
大数据
229
工具
31
其它
25
GO
47
标签云
容器深入研究
Elasticsearch
Livy
Docker
查找
JavaSE
Scala
FastDFS
SpringCloudAlibaba
二叉树
MyBatis
算法
nginx
SQL练习题
Flink
NIO
Ubuntu
Java编程思想
FileBeat
Beego
并发编程
Python
随笔
Java阻塞队列
Java
哈希表
栈
序列化和反序列化
SpringBoot
Elastisearch
友情链接
申请
范明明
庄严博客
Mx
陶小桃Blog
虫洞