jjzjj

LinkedHashSet

全部标签

java - 为什么 LinkedHashSet 的 boolean accessOrder 设置为 false

在Java中,LinkedHashSet是通过支持HashSet创建的,使用以下LinkedHashMap构造函数创建LinkedHashMapmap=newLinkedHashMap(initialCapacity,loadFactor);此时在LinkedHashMap中,依次调用上面的构造函数publicLinkedHashMap(intinitialCapacity,floatloadFactor){super(initialCapacity,loadFactor);accessOrder=false;}那么有什么方法可以将accessOrder设置为true的LinkedHa

java - TreeSet 与 LinkedHashSet 和 TreeMap 相比 LinkedHashMap 增加了多少成本?

LinkedHashSet-此实现使其客户免受HashSet提供的未指定的、通常困惑的排序的影响,而不会导致与TreeSet相关的成本增加。关于LinkedHashMap与TreeMap的说法相同增加的成本(LinkedHashMap与TreeMap)究竟是多少?这是否意味着TreeSet每个元素需要更多内存?LinkedHashSet需要更多的内存用于两个额外的链接,但是TreeSet需要额外的内存来存储Map.Entry对元素(因为隐式基于TreeMap),此外LinkedHashSet基于HashMap也有Map.Entry对元素开销......所以区别在于添加新元素的速度有多快

Java 链接哈希集

我一直在学习OCJP(以前的SCJP),我遇到了以下使用LinkedHashSet的示例:publicclassTest{intsize;publicTest(ints){this.size=s;}@Overridepublicbooleanequals(Objectobj){return(this.size==((Test)obj).size);}publicstaticvoidmain(String[]args){LinkedHashSets=newLinkedHashSet();s.add(newTest(1));s.add(newTest(2));s.add(newTest(1

java - LinkedHashMap 与 LinkedHashSet 的优缺点是什么?

有人可以解释选择一个而不是另一个的主要好处以及该选择带来的损害吗? 最佳答案 它们解决不同的问题,LinkedHashMap将键映射到值,LinkedHashSet只是存储没有重复的事物的集合。链接HashMap用于映射键/值对——例如,存储姓名和年龄:MapnamesAndAges=newLinkedHashMap();namesAndAges.put("Benson",25);namesAndAges.put("Fred",19);另一方面,链接哈希集用于存储一个事物的集合——名称,例如:Setnames=newLinkedHa

java - Java 如何从 LinkedHashSet 中获取一个元素?

我正在寻找将给定集合划分为不相交子集的代码。例如,一组足球运动员,我们根据他们所属的球队对他们进行划分。最后我想要一份代表名单,即每队一名球员。所有足球运动员都认识他们球队中的所有其他球员——这与复杂性非常相关。所以,我目前关于如何做到这一点的想法如下(其中set当前是LinkedHashSet):while(!set.isEmpty()){Ee=set.iterator().next();makeRepresentative(e);set.remove(AllPlayersOnSameTeamAs(e));}但是,在while循环的每一步都构建一个新的迭代器感觉很奇怪。LinkedH

java - 具有相同元素但不同顺序的 LinkedHashSet .equals() 与 LinkedList .equals()

考虑以下SSCCE:publicstaticvoidmain(String[]args){LinkedHashSetset1=newLinkedHashSet();set1.add("Bob");set1.add("Tom");set1.add("Sam");LinkedHashSetset2=newLinkedHashSet();set2.add("Sam");set2.add("Bob");set2.add("Tom");System.out.println(set1);System.out.println(set2);System.out.println(set1.equals(

java - LinkedHashSet 实现 LRU

我想删除LinkedHashSet中最早的成员,我知道有一个removeEldestEntry方法我必须重写(JavadocforremoveEldestEntry),但我想我必须定义initialcapacity和loadfactor我不在乎,我只是想删除最近最少访问的元素(这里通过访问我的意思是当它已经在集合中或被读取时被put)有什么方法可以不覆盖removeEldestEntry吗? 最佳答案 Iknowthatthere'saremoveEldestEntrymethodthatIhavetooverride这个说法是错误

java - 不同的默认 'initialCapacity' HashSet 和 LinkedHashSet

当从一个集合构造一个HashSet和一个LinkedHashSet时,initialCapacity在默认实现中被设置为不同的值。哈希集:publicHashSet(Collectionc){map=newHashMap(Math.max((int)(c.size()/.75f)+1,16));addAll(c);}链接哈希集:publicLinkedHashSet(Collectionc){super(Math.max(2*c.size(),11),.75f,true);addAll(c);}我确信这有一个完全正当的理由,但我没有看到。 最佳答案

java - 如何从 LinkedHashSet 中获取前 5 个值?

我有一个包含多个值的LinkedHashSet。LinkedHashSetlhs=newLinkedHashSet();我想遍历值集并显示该集中存储的项目数的前五个值。我使用了一个for循环来遍历值并显示数据,如下所示:for(Stringsent:lhs){text.append(sent);}这将输出存储在LinkedHashSet中的所有值。为了仅从集合中获取前5个值,我应该对我的代码进行哪些更改。 最佳答案 你可以得到你的集合IteratorIteratorit=yourSet.iterator();并移动到next()元素

Java的Set集合,你真的会用吗?HashSet/TreeSet/LinkedHashSet

引言当我们需要对元素去重的时候,会使用Set集合,可选的Set集合有三个,分别是HashSet、LinkedHashSet、TreeSet,这三个常用的Set集合有什么区别呢?底层实现原理是什么样?这篇文章一起来深度剖析。共同点这三个类都实现了Set接口,所以使用方式都是一样的,使用add()方法添加元素,使用remove()删除元素,使用contains()方法判断元素是否存在,使用iterator()方法迭代遍历元素,这三个类都可以去除重复元素。特性HashSet是最基础的Set集合,可以去除重复元素,元素存储是无序的。LinkedHashSet在HashSet功能基础上,增加了按照元素插