map set list三种集合之间的关系及各自的特点
来源:互联网 发布:网络扑克 编辑:程序博客网 时间:2024/06/04 19:54
今天给大家带来的是三种常用集合各自的性能分析,这里只是浅谈,就不深入讲解底层了。
在这里先上关系图:
一,Conllection:
接下来先看一下Collection接口:
他有两个子接口,Set和List,
1,Set(公共特点;无序)
是一个无序的集合接口,并且元素不可重复,当然,这里的无序是针对放入顺序而言,并不是绝对的无序,他有两个子类,一个是hashSet,还有一个是继承了SortedSet接口的TreeSet,这两个set集合有什么特点呢?
首先,hashSet的底层是hashmap,他有着hashmap中键的特性,那就是,无序,不可重复性,
其次,treeset实现了sortset接口,sortedset有排序能力,也就意味着treeset也有着排序的能力,他是使用二叉树进行排序的。
2,list(有序):
list接口也有两个子类,一个是arraylist,一个是linkedList,
首先arralist的底层是object[]是一个数组,也就意味着他有着数组的特性,但是和数组相比他比数组灵活,无需设置长度,他是有序的,所以查找块,增删比较慢,
和arralist其实有一个兄弟叫vector,他和arralist是一样的
Vector是线程安全的,也就是说是它的方法之间是线程同步的,而arralist线程是异步的也就是说他是不安全的,但是效率高,相比之下,建议使用arralist.,
linkedlist:
他底层是以链表的形式进行排序的,两个元素之间就如同链子一样前关联,如果进行增删操作的时候,只需要将某个元素替换然后将后边的关联简单修改就可以完成,所以说建议查询用arralist,增删用linkedlist;
二,map(公共特点特点:以键值对的形式存储,):
简单来讲常用的map类的集合也有三个,常用的有三个子类实现了mapj接口:map存在的意义就是为了快速查找,通过键的直接找到值,因为键是不可重复的。
1,hashMap和hashtable:
两者放在一起比较(底层都是hash表结构):hashmap线程是不安全的允许键值对为null,二hashtable线程是安全的不允许键值对为null,两者的其他属性是一样的,所以两者的使用要看具体的情况而定,
2,treemap(底层是二叉树)
,线程不同步,可用于给Map集合中的键进行排序总结:三者的存在关系:,虽然说有些集合是无序的,但是子类个别的也是按照另一种方式进行了排序,只不过不符合我们日常的排序方式。是按照某种规则进行的。
Map中元素,可以将key序列、value序列单独抽取出来。使用keySet()抽取key序列,将map中的所有keys生成一个Set。使用values()抽取value序列,将map中的所有values生成一个Collection。为什么一个生成Set,一个生成Collection?那是因为,key总是独一无二的,value允许重复
1 0
- map set list三种集合之间的关系及各自的特点
- Java中的Set List Map 的各自特点
- java 集合类 map/set/list/vector之间的关系
- list set map的特点及区别
- list接口和set接口下常用的几种list~set集合的之间关系和它们各自特征的图解
- Collection、List、Set、Map之间的关系
- List Map Set集合之间的区别
- Java语言中List、Set、Map三种集合之间的区别
- 利用Set List Map集合的特点处理重复字符串
- java 集合(list、set、map)的特点
- java 集合(list、set、map)的特点
- 简述list,vector,map,set四中STL的数据结构的区别和各自特点
- 黑马程序员-java的集合概念:Coleection,List,Map,Set之间的关系
- List、Map、Set三个接口,存取元素时,各自的特点
- java集合框架之Set和Map之间的关系
- Java集合Map,set, list 之间的转换
- Set,List,Map的关系
- list ,set,map的特点与区别
- android 下拉窗口菜单的实现(popupwindow)
- ViewPager+Fragment练习first
- PopupWindow popupWindow.showAtLocation(view,Gravity.TOP,x,y) 被顶部系统状态栏挡住内容
- Matlab与线性代数 -- 向量的范数
- android stuio修改代码参考线和智能换行
- map set list三种集合之间的关系及各自的特点
- 【五年】Java打怪升级之路
- Android相关技术博客汇总
- Linux下tar命令详解
- LINUX进程内存占用查看方法
- 按回退键完全关闭所有Activity
- CSDN博客添加浮动窗口的方法
- CountDownTimer的使用和原理
- You must not call setTag() on a view Glide is targeting