Java中Map,List与Set的区别

Java中Map,List与Set的区别

首先,数组和集合的区别:

数组是大小固定的
集合可以存储和操作数目不固定的一组数据,集合只能存放引用类型的的数据,不能存放基本数据类型

特性
List

允许重复
有序
继承自Connection

Set

不允许重复
无序
继承自Connection

Map

键值对
区别与List和Set,既没有继承也没有实现Connection

场景

三者各自适用什么样的场景?
List

使用索引对元素进行访问
ArrayList适合快速查找,LinkedList适合增删元素
对有序有需求

Set

确保元素的唯一性
常用的Set有:HashSet、LinkedHashSet和 TreeSet。其中,TreeSet中的元素可以使用Comparator 或者 Comparable 进行排序;LinkedHashSet也按照元素的插入顺序对它们进行存储

Map

希望以键值对的形式存在
常用的Map有:HashMap、LinkedHashSet和TreeMap。其中HashMap是无序的,LinkedHashSet有序,TreeMap可通过Comparator 或者 Comparable 进行排序
另外HashTable也可以实现键值对,并且相对于HashMap是线程安全的,但是由于JAVA5以上 ConcurrentHashMap是线程安全的,但现在已经基本被HashMap取代

怎么让HashMap同步?

synchronizeMap

Map m = Collections.synchronizeMap(hashMap);

JAVA5以上 ConcurrentHashMap是HashTable的替代 (即线程安全的)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值