Map、Set、List简介

Map

以键值对的形式

将键映射到值得对象。一个映射不能包含重复的键,每个键最多只能映射一个值。

常用的有三个子类实现了map接口:map的存在是为了快速查找,拖过键找到值,所以键值是不可能重复的。

hashMap 和hashtable:两者都是hash结构的,hashmap线程是不安全的允许键值对为null,hashtable线程是安全的不允许键值对为null,两者的其他属性是一样的,所以两者的使用要看具体的情况而定。

treemap:底层是二叉树的接口。线程不同步,可用于给Map集合中的键进行排序,虽然说有些集合是无序的,但是子类个别的也是按照另一种方式进行了排序,只不过不符合我们日常的排序方式。是按照某种规则进行的。

三者的关系:

Map中元素,可以将key序列、value序列单独抽取出来。
使用keySet()抽取key序列,将map中的所有keys生成一个Set。
使用values()抽取value序列,将map中的所有values生成一个Collection。

为什么一个生成Set,一个生成Collection?那是因为,key总是独一无二的,value允许重复
 

Set

首先是一个无序不可重复的集合,无序指的是不是按照放入顺序排序,但不是真的无序。Set还有两个子类,一个是hashSet,还有一个是继承了SortedSet接口的TreeSet。

hashSet的底层是hashmap,他有着hashmap中键的特性,那就是,无序,不可重复性,

treeset实现了sortset接口,sortedset有排序能力,也就意味着treeset也有着排序的能力,他是使用二叉树进行排序的。

List

这是一个有序可重复的集合。

list接口也有两个子类,一个是arraylist,一个是linkedList,

首先arralist的底层是object[]是一个数组,也就意味着他有着数组的特性,但是和数组相比他比数组灵活,无需设置长度,他是有序的,所以查找块,增删比较慢。

linkedlist:他底层是以链表的形式进行排序的,两个元素之间就如同链子一样前关联,如果进行增删操作的时候,只需要将某个元素替换然后将后边的关联简单修改就可以完成,所以说建议查询用arralist,增删用linkedlist。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值