如何从Java映射中获取元素位置[英] How to get element position from Java Map

问题描述

我有这个 Java 地图:

你能告诉我如何获得地图的第 6 个元素吗?

private static final Map<String, Users> cache = new HashMap<>();

这可能吗?还是我必须使用另一个 Java 集合?

推荐答案

虽然回答有点晚了.但选项是使用 LinkedHashMap:此地图保留正如每个人所建议的那样,根据元素的插入进行排序.但是,作为警告,它有一个构造函数 LinkedHashMap(int initialCapacity, float loadFactor, boolean accessOrder),它将创建一个链接的哈希映射,其迭代顺序是其条目最后一个 accessed 的顺序.在这种情况下不要使用此构造函数.

但是,如果我需要这样的功能,我会扩展它并实现我必要的功能,以便以 OOP 方式重用它们.

class MyLinkedMap<K, V> extends LinkedHashMap<K, V>
{

    public V getValue(int i)
    {

       Map.Entry<K, V>entry = this.getEntry(i);
       if(entry == null) return null;

       return entry.getValue();
    }

    public Map.Entry<K, V> getEntry(int i)
    {
        // check if negetive index provided
        Set<Map.Entry<K,V>>entries = entrySet();
        int j = 0;

        for(Map.Entry<K, V>entry : entries)
            if(j++ == i)return entry;

        return null;

    }

}

现在我可以实例化它,并且可以按照我想要的方式获取条目和值:

MyLinkedMap<String, Integer>map = new MyLinkedMap<>();
map.put("a first", 1);
map.put("a second", 2);
map.put("a third", 3);

System.out.println(map.getValue(2));
System.out.println(map.getEntry(1)); 

输出:

3
a second=2

本文地址:https://www.itbaoku.cn/post/978769.html