LinkedHashSet

问题描述:java的LinkedHashSet是怎样实现存取有序的, 底层原理是什么 大家好,小编来为大家解答以下问题,linkedhashset和hashset区别,linkedhashset线程安全吗,现在让我们一起来看看吧!

android关于hashSet和linkedHashSet区别的问题

LinkedHashSet的相关图片

LinkedHashSet 的实现。

对于 LinkedHashSet 而言,它继承与 HashSet、又基于 LinkedHashMap 来实现的。

LinkedHashSet 底层使用 LinkedHashMap 来保存所有元素,它继承与 HashSet,其所有的方法操作上又与 HashSet 相同,因此 LinkedHashSet 的实现上非常简单,只提供了四个构造方法,并通过传递一个标识参数,调用父类的构造器,底层构造一个 LinkedHashMap 来实现,在相关操作上与父类 HashSet 的操作相同,直接调用父类 HashSet 的方法即可。

需要注意理解的点是:

LinkedHashSet 是 Set 的一个具体实现,其维护着一个运行于所有条目的双重链接列表。此链接列表定义了迭代顺序,该迭代顺序可为插入顺序或是访问顺序。

LinkedHashSet 继承与 HashSet,并且其内部是通过 LinkedHashMap 来实现的。有点类似于我们之前说的LinkedHashMap 其内部是基于 Hashmap 实现一样,不过还是有一点点区别的(具体的区别大家可以自己去思考一下)。

如果我们需要迭代的顺序为插入顺序或者访问顺序,那么 LinkedHashSet 是需要你首先考虑的。

HashSet,TreeSet和LinkedHashSet的区别的相关图片

HashSet,TreeSet和LinkedHashSet的区别

HashSet是无序的,就是ABCD存进去,去你遍历的时候,并不会是ABCD。

LinkedHashSet是有序的,因为这个是双向链表的实现,你存数据的时候是ABCD 那么遍历的时候也会是ABCD,如果你用sharedPreferences存数据的话,建议你直接把这个set转成json或者直接存数据库吧,sharedPreferences不适合保存集合类数据的。

linkedhashset,hashtable底层是由什么实现的,hashtable是不是同步的的相关图片

linkedhashset,hashtable底层是由什么实现的,hashtable是不是同步的

HashSet:根据对象hashcode值来决定存储位置,不保证对象元素的排列顺序。

LinkedHashSet:通过链表来保持对象元素在插入时的顺序。

TreeSet:确保对象元素处于排序状态。

HashSet,TreeSet和LinkedHashSet的区别的相关图片

HashSet,TreeSet和LinkedHashSet的区别

hastTable和hashMap的区别:。

(1)Hashtable是基于陈旧的Dictionary类的,HashMap是Java 1.2引进的Map接口的一个实现。

(2)这个不同即是最重要的一点:Hashtable中的方法是同步的,而HashMap方法(在缺省情况下)是非同步的。即是说,在多线程应用程序中,不用专门的操作就安全地可以使用Hashtable了;而对于HashMap,则需要额外的同步机制。但HashMap的同步问题可通过Collections的一个静态方法得到解决:

Map Collections.synchronizedMap(Map m)。

这个方法返回一个同步的Map,这个Map封装了底层的HashMap的所有方法,使得底层的HashMap即使是在多线程的环境中也是安全的。

(3)只有HashMap可以让你将空值作为一个表的条目的key或value。HashMap中只有一条记录可以是一个空的key,但任意数量的条目可以是空的value。这就是说,如果在表中没有发现搜索键,或者如果发现了搜索键,但它是一个空的值,那么get()将返回null。如果有必要,用containKey()方法来区别这两种情况。

其它的一些资料:

HashTable的方法是同步的,HashMap未经同步,所以在多线程场合要手动同步HashMap这个区别就像Vector和ArrayList一样。(最主要的区别)

2.HashTable不允许null值(key和value都不可以),HashMap允许null值(key和value都可以,只容许有一个null值的key,可以有多个null值的value)。

3.HashTable有一个contains(Object value),功能和containsValue(Object value)功能一样。

4.HashTable使用Enumeration,HashMap使用Iterator。

以上只是表面的不同,它们的实现也有很大的不同。

5.HashTable中hash数组默认大小是11,增加的方式是 old*2+1。HashMap中hash数组的默认大小是16,而且一定是2的指数。

6.哈希值的使用不同,HashTable直接使用对象的hashCode,代码是这样的:

int hash = key.hashCode();。

int index = (hash  0x7FFFFFFF) % tab.length;。

而HashMap重新计算hash值,而且用与代替求模:

int hash = hash(k);。

int i = indexFor(hash, table.length);。

static int hash(Object x) {。

int h = x.hashCode();。

h += ~(h << 9);。

h ^= (h >>> 14);。

h += (h << 4);。

h ^= (h >>> 10);。

return h;

static int indexFor(int h, int length) {。

return h  (length-1);。

以上只是一些比较突出的区别,当然他们的实现上还是有很多不同的,比如。

HashMap对null的操作。

java set 顺序

HashSet 与TreeSet和LinkedHashSet的区别。

Set接口

Set不允许包含相同的元素,如果试图把两个相同元素加入同一个集合中,add方法返回false。

Set判断两个对象相同不是使用==运算符,而是根据equals方法。也就是说,只要两个对象用equals方法比较返回true,Set就不会接受这两个对象。

HashSet与TreeSet都是基于Set接口的实现类。其中TreeSet是Set的子接口SortedSet的实现类。Set接口及其子接口、实现类的结构如下所示:

|——SortedSet接口——TreeSet实现类。

Set接口——|——HashSet实现类 。

|——LinkedHashSet实现类。

原文地址:http://www.qianchusai.com/LinkedHashSet.html

千岱公司-80,杭州千岱山居度假酒店

千岱公司-80,杭州千岱山居度假酒店

xiaoxue/23269

xiaoxue/23269

urls,url视频地址怎么获取

urls,url视频地址怎么获取

百二,百二关河草不横,十年戎马暗秦京

百二,百二关河草不横,十年戎马暗秦京

aloe,aloenadur mcqueen是什么品牌

aloe,aloenadur mcqueen是什么品牌

vivov7-150

vivov7-150

霹雳文库-60,霹雳全文免费阅读

霹雳文库-60,霹雳全文免费阅读

goodnotes5-100

goodnotes5-100

tda7377-160

tda7377-160

iplc和v2ray

iplc和v2ray

三国志战略版装备特技详解 三国志战略版天下骑吕布阵容搭配攻略 三国志战略版PK赛季阵容推荐表 - 实用搭配指南 三国志战略版视角设置方法详解 三国志战略版侠客军怎么玩 - 新手入门攻略 三国志11国号表 - 游戏资料参考 三国志11遗迹专题 - 探索经典策略游戏中的神秘地点 三国志战略版PK赛季5级地攻占攻略 - 简明开荒与配将指南 三国志战略版赛季剧本推荐 - 精选开荒阵容与实战技巧 三国志战略版白板张角玩法全攻略 - 平民玩家实用指南 三国志战略版官方电脑版下载 - 原汁原味的策略SLG游戏 三国志战略版锋矢阵适合什么阵容?实用搭配攻略 三国志战略版T0无惧骑阵容攻略 - 最强骑兵搭配与实战技巧 三国志战略版吴国战法搭配指南 - 简明实用推荐 三国志战略版:新手前48小时关键攻略 | 朴素实用指南 三国志战略版陈到技能加点与阵容搭配完全指南 三国志战略版赵云伤害公式详解 - 原创攻略 三国志战略版历久征尘兑换码输入方法 - 简单图文教程 三国志战略版S2任务大全 - 详细攻略与完成指南 三国志武将战力排行 - 历史人物战斗力分析 三国志11自制地图与城市 - 玩家创作分享 三国志13快速达到十万兵力技巧攻略 三国志战略版郭嘉混搭阵容搭配攻略 三国志战略版分城分配策略指南 三国志战略版白板张角开荒攻略 | 零氪玩家实用指南 三国志战略版霸业奖励多少钱?真实收益解析 三国志下载电脑版 - 经典策略游戏PC版下载指南 三国志13pk绅士版 - 经典策略游戏修改版介绍 三国志战略版电脑版 - 经典策略游戏专题 三国志战略版阵法优先级详解 - 游戏攻略