假设我有一个对象集合,例如flight对象,列表变得太大,我想删除访问量最少的对象。我如何知道哪个对象访问最多?我如何知道访问次数最少的对象? Java中的任何集合是否提供此信息? Java集合是否将最近访问的对象放在前面? 假设我想删除列表的1/3。 谢谢
答案 0 :(得分:1)
您可以将LinkedHashMap用作此类集合。它通常将最近的用途放在最后。
答案 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实例。