从集合中删除访问最少的对象

时间:2015-12-06 08:50:16

标签: java collections

假设我有一个对象集合,例如flight对象,列表变得太大,我想删除访问量最少的对象。我如何知道哪个对象访问最多?我如何知道访问次数最少的对象? Java中的任何集合是否提供此信息? Java集合是否将最近访问的对象放在前面? 假设我想删除列表的1/3。 谢谢

2 个答案:

答案 0 :(得分:1)

您可以将LinkedHashMap用作此类集合。它通常将最近的用途放在最后。

What is the use of LinkedHashMap.removeEldestEntry?

答案 1 :(得分:1)

您可以使用LinkedHashMap。它具有特殊的构造函数,用于主要最近访问。 https://docs.oracle.com/javase/8/docs/api/java/util/LinkedHashMap.html

  

提供了一个特殊的构造函数来创建一个链接的哈希映射   迭代顺序是其条目的最后顺序   访问,从最近访问到最近访问   (存取顺序)。这种地图非常适合构建LRU   缓存。调用put,putIfAbsent,get,getOrDefault,compute,   computeIfAbsent,computeIfPresent或merge方法导致   访问相应的条目(假设它存在于之后   调用完成)。替换方法只会导致访问   如果值被替换,则为条目​​。 putAll方法生成一个   对于指定映射中的每个映射的入口访问,按顺序   键值映射由指定映射的条目集提供   迭代器。没有其他方法可以生成入口访问。特别是,   集合视图上的操作不会影响迭代的顺序   支持地图。

LinkedHashMap(int initialCapacity,float loadFactor,boolean accessOrder) 使用指定的初始容量,加载因子和排序模式构造一个空的LinkedHashMap实例。