李林超博客
首页
归档
留言
友链
动态
关于
归档
留言
友链
动态
关于
首页
Java
正文
Java集合相关知识总结
Leefs
2020-03-17 AM
2171℃
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
NLP
4
标签云
CentOS
国产数据库改造
BurpSuite
查找
Hadoop
FastDFS
ajax
数据结构
递归
pytorch
微服务
Sentinel
Tomcat
Http
线程池
JVM
Golang基础
DataWarehouse
工具
人工智能
稀疏数组
排序
JavaSE
GET和POST
Scala
正则表达式
Elasticsearch
Spark
队列
随笔
友情链接
申请
范明明
庄严博客
Mx
陶小桃Blog
虫洞
评论已关闭