将LinkedHashMap中的所有键提取到List中的方法

use*_*361 15 java key hashmap map linkedhashmap

我有许多工作LinkedHashMap是要么LinkedHashMap<Long, Long>,LinkedHashMap<Long, Double>或LinkedHashMap<Long, Integer>.

我的目标是找到或创建一个方法,该方法将以相同的顺序返回List<Long>上面的所有键.排序很重要,这就是为什么我认为我不能使用哪个是.此外,我有许多其他方法只接受输入,所以我希望在该对象类型中返回所需的方法,以便我可以继续使用这些方法.LinkedHashMap<Long,...> myMap.keySet()Set<Long>List<Long>

编写一个方法来返回它,例如a LinkedHashMap<Long, Long>很容易:

private static List<Long> getLongKeys(LinkedHashMap<Long, Long> target) {
    List<Long> keys = new ArrayList<Long>();

    for(Map.Entry<Long, Long> t : target.entrySet()) {
        keys.add(t.getKey());
    }
    return keys;
}
Run Code Online (Sandbox Code Playgroud)

但是,除了LinkedHashMap<Long, Double>和之外,我需要编写几乎相同的方法LinkedHashMap<Long, Integer>.

有没有什么办法可以概括我粘贴到接受所有三种类型的方法:LinkedHashMap<Long, Long>,LinkedHashMap<Long, Double>或LinkedHashMap<Long, Integer>?

Roh*_*ain 19

排序很重要,这就是为什么我不认为我可以使用myMap.keySet()这是一个Set

该Map#keySet()方法LinkedHashMap将以插入顺序返回该集合.这是Map文档中的引用:

地图的顺序定义为地图集合视图上的迭代器返回其元素的顺序.一些地图实现,比如TreeMap类,对它们的顺序做出了特定的保证; 其他人,比如HashMap类,没有.

因此,您不需要为此编写单独的方法.类似keySet()和的方法entrySet()仅返回插入顺序中的条目.


好吧,如果你真的想要一个List<Keys>,那么你可以直接做:

List<Long> keys = new ArrayList<>(target.keySet());
Run Code Online (Sandbox Code Playgroud)

..无论你想要一个List.你根本不需要这个方法.