草庐IT

LinkedHashSet和LinkedHashMap手记

全部标签

java - 什么是 LinkedHashMap<k, v>?

好吧,我是这些HashMap的新手,但对LinkedLists和HashMap有一些了解。如果您能给我一些关于LinkedHashMap的简单解释就太好了,正如标题中那样,这是否意味着我们明确将其定义为某种类型? 最佳答案 ALinkedHashMapisacombinationofhashtableandlinkedlist.Ithasapredictableiterationorder(alalinkedlist),yettheretrievalspeedisthatofaHashMap.Theorderoftheiterati

java - 如何实现与LinkedHashMap类似的ConcurrentHashMap?

我使用了LinkedHashMap,accessOrder为true,并且在任何时候都允许最多500个条目作为数据的LRU缓存。但由于可伸缩性问题,我想转向一些线程安全的替代方案。ConcurrentHashMap在这方面似乎不错,但缺少accessOrder和removeEldestEntry(Map.Entrye)的功能,可在LinkedHashMap。谁能指出一些链接或帮助我简化实现。 最佳答案 我最近用ConcurrentHashMap做了类似的事情,其中CacheEntry包装实际项目并添加缓存逐出统计信息:过期时间、插入

java - C# 中 LinkedHashSet (Java) 的等价物是什么?

什么是C#中的LinkedHashSet(Java)? 最佳答案 HashSet可以完成这项工作,因为它实际上等同于Java中的LinkedHashSet。HashSet由链表支持——尽管文档没有明确声明它保留顺序或由基于数组的链表支持。从thesourcecode可以看出实现是一个LinkedHashSet。与JavaLinkedHashSet一样,不允许重复。这和LinkedHashSet之间的一个区别是,如果你从集合中删除一些东西,它只会将元素标记为数组中的空闲元素,因此在remove()之后添加一个项目会在“追加”之前先填充

java - 如何获得 LinkedHashMap 的 keyIterator?

通过查看Sun的LinkedHashMaps的源代码,我看到有一个名为KeyIterator的私有(private)类,我想使用它。我怎样才能获得访问权限? 最佳答案 调用即可myMap.keySet().iterator();您甚至不需要知道它的存在;它只是实现的产物。就您所知,他们可能正在使用飞猴来迭代键;只要它们根据规范进行迭代,它们如何做并不重要。顺便说一句,你知道吗HashMap有一个名为KeyIterator的私有(private)类(ConcurrentHashMap、ConcurrentSkipListMap、Enu

java - LinkedHashMap 的 ConcurrentModificationException

当我遍历下面代码中的LinkedHashMap结构时,不确定是什么触发了java.util.ConcurrentModificationException。使用Map.Entry方法效果很好。没有从以前的帖子中得到关于触发此问题的良好解释。如有任何帮助,我们将不胜感激。importjava.util.LinkedHashMap;importjava.util.Map;publicclassLRU{//privateMapm=newHashMap();//privateSortedMaplru_cache=Collections.synchronizedSortedMap(newTree

java - HashMap 或 TreeMap 和 LinkedHashMap 哪个迭代最快?

我有一个Map,它在应用程序启动期间被填满。它在应用程序执行期间不会更改。后来这个map只用来迭代里面的所有元素。我应该选择哪种Map的具体实现?HashMap或TreeMap或LinkedHashMap?更新插入顺序无关紧要。唯一重要的是所有元素的快速迭代(比如6000个元素)。 最佳答案 HashMap通常是最快的,因为它具有最好的缓存行为(HashMap直接遍历后备数组,而TreeMap和LinkedHashMap迭代链接的数据结构)。您可能想要使用ImmutableMap或UnmodifiableMap如果map在初始化后不

java - 获取最后一个 LinkedHashSet

我想存储一个数字列表1,2,3,4-(让我们从List开始)我想确保数字是唯一的(好的,很好,Set)我想保证订单(好的...LinkedHashSet)我想从列表中获取最后一个元素..将最后一个数字插入到LinkedHashSet中的最简单方法是什么?好吗? 最佳答案 没有为此预烘焙的选项。有两种现成的选择,但都不好:Ordern方法:publicEgetLast(Collectionc){Elast=null;for(Ee:c)last=e;returnlast;}呸!但还有一种Order1方法:classCachedLinke

java - LinkedHashMap 与 HashMap != LinkedList 与 ArrayList

我读到LinkedHashMap的迭代速度比HashMap快,因为它的元素是相互双向链接的。此外,正因为如此,LinkedHashMap在插入或删除元素时速度较慢。大概是因为这些链接也需要更新。虽然我可以看到LinkedList与ArrayList的类比,因为LinkedList的元素也是双向链接的,但我读到它比ArrayList迭代慢,并且具有更快的插入和删除时间。这是为什么?也许我在某处犯了错误?干杯! 最佳答案 这个比喻不成立。LinkedList和ArrayList是List的两个不相关的实现。然而,LinkedHashMa

java - 对 LinkedHashSet 进行排序

我想知道是否可以对LinkedHashSet进行排序。我试过声明Collections.sort((Listparagraph);但是,这只会抛出一个错误,即无法将其转换为列表。有没有办法做到这一点,或者我应该使用另一种数据结构? 最佳答案 您应该使用SortedSet,例如TreeSet或ConcurrentSkipListSet如果您关心基于比较的排序(例如排序顺序)。LinkedHashSet根据插入顺序保留顺序。如果你真的想使用Collections.sort你可以通过实际构造一个List将LHS转换成一个List(虽然问题

redis - LinkedHashMap 行为与 Redis 哈希?

我想在Redis(Jedis客户端)中使用Hashes数据结构,但也想维护插入顺序,类似于Java中的LinkedHashMap。我是Redis的新手,浏览了所有数据结构和命令,但不知何故无法想到任何直接的解决方案。任何帮助或建议将不胜感激。 最佳答案 Redis中的哈希不维护插入顺序。您可以使用SortedSet达到相同的效果和一个跟踪订单的柜台。这是一个简单的示例(抱歉,使用Ruby语言):items={foo:"bar",yin:"yang",some_key:"some_value"}items.eachdo|key,val