集合专题Collection(List、Set)、Map

本文是对常见的集合知识点进行归纳整理

一、Collection接口、Map接口的框架结构
在这里插入图片描述

在这里插入图片描述

二、List、Set、Map之间的区别
List
1、 允许重复对象(可插入多个null元素)
2、 有序容器,插入顺序就是输出顺序
(常用的实现类有 ArrayList、LinkedList 和 Vector。ArrayList 最为流行,它提供了使用索引的随意访问,而 LinkedList 则对于经常需要从 List 中添加或删除元素的场合更为合适)
Set
1、 不允许重复对象(只允许插入一个null元素)
2、 无序容器,无法保证每个元素的存储顺序
(其实现类TreeSet是一个根据其 compare()和compareTo() 的定义进行排序的有序容器)
Map
1、 以键值对(key-value)形式存储数据,一个键对应一个值
2、 同一个Map中可能会有多个相同的值,但键必须是唯一的(只能有一个 null 键,可有多个 null 值)
3、 无序容器,但其实现类TreeMap 可通过 Comparator 或 Comparable 维护排序顺序

三、List、Set、Map的使用场景
1、(List)经常使用索引来对容器中的元素进行访问,那么 List 是你的正确的选择。
(1)若已经知道索引, ArrayList 可以提供更快速的访问
(2)若经常添加/删除元素,选择LinkedList
2、(List)若希望容器中的元素能够按照它们插入的次序进行有序存储,那么还是 List,因为 List 是一个有序容器,它按照插入顺序进行存储。
3、(Set)若希望保证插入元素的唯一性,也就是你不想有重复值的出现,那么可以选择一个 Set 的实现类
4、(Map)若以键和值的形式进行数据存储那么 Map 是你正确的选择。

四、ArrayList和LinkedList的区别
1、数据结构:ArrayList是基于动态数组的,LinkedList基于双向循环链表的。
2、对于随机访问get和set,ArrayList优于LinkedList,因为LinkedList要移动指针。
3、对于添加、删除操作,LinkedList优于ArrayList,因为ArrayList要移动数据、更新索引。

五、ArrayList和Vector的区别
1、Vector的方法都是同步的(Synchronized),是线程安全的
ArrayList的方法不同步,线程不安全
2、性能:由于由于线程的同步必然影响性能,因此,ArrayList的性能优于Vector
3、ArrayList和Vector都可以使用for语句或者迭代器遍历,但是Vector还可以使用枚举遍历

六、HashMap和HashTable的区别
1、HashMap是非线程安全的,HashTable是线程安全的(synchronized)
2、HashMap允许key和value都为null,而HashTable都不能为null
3、HashMap和HashTable扩容的方法不一样

七、Collection和Collections的区别
1、Collection: 是java.util 下的接口,是各种集合的父接口,继承它的接口主要有List和Set
2、Collections:是java.util 下的类,是针对集合的帮助类,它提供一系列静态方法实现对各种集合的搜索、排序、线程安全化等操作

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值