唠唠SE的集合-00——概述

论坛 期权论坛 脚本     
匿名技术用户   2020-12-28 14:01   20   0

---|Collection:单列集合

--------|List:有存储顺序,可重复

-------------|ArrayList:数组实现,查找快,增删慢

由于是数组实现,在增和删的时候会牵扯到数组增容、以及拷贝元素,所以慢。

数组是可以直接按索引查找,所以查找时较快

-------------|LinkedList:链表实现,增删快,查找慢

由于链表实现,增加时只要让前一个元素记住自己就可以,删除时让前一个元素记住后一个元素,

后一个元素记住前一个元素. 这样的增删效率较高但查询时需要一个一个的遍历,所以效率较低

-------------|Vector:和ArrayList原理相同,但线程安全,效率略低

--------|Set:无存储顺序,不可重复

-------------|HashSet:线程不安全,存取速度快。底层用哈希表实现。

如果两个对象的hashCode相同,那么元素重复。

-------------|TreeSet:红-黑树的数据结构,默认对元素进行自然排序(String)。

如果在比较的时候两个对象返回值为0,那么元素重复。

---| Map:双列集合

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

---------|HashMap:底层是哈希表数据结构,线程是不同步的,可以存入null键,null值。

要保证键的唯一性,需要重写hashCode方法和equals方法。

---------|TreeMap:底层是红-黑树数据结构。可以对map集合中的键进行排序。

需要使用Comparable或者Comparator进行比较排序,来判断键的唯一性。

---------|HashTable:底层是哈希表数据结构,线程是同步的,不可以存入null键,null值。效率较低,被HashMap替代。

每一个容器对数据的存储方式不同,这种存储方式称之为数据结构(data structure)

转载于:https://my.oschina.net/LinkedBear/blog/1615306

分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:7942463
帖子:1588486
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP