java – 将所有键从LinkedHashMap提取到列表的方法

前端之家收集整理的这篇文章主要介绍了java – 将所有键从LinkedHashMap提取到列表的方法前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在使用许多LinkedHashMap,它们是LinkedHashMap< Long,Long> LinkedHashMap< Long,Double>或LinkedHashMap< Long,Integer>.

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

编写一个方法来返回,例如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;
}

然而,我需要编写几乎相同的方法,除了LinkedHashMap< Long,Double>和LinkedHashMap< Long,Integer>.

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

解决方法

The ordering is important which is why I don’t think I can use myMap.keySet() which is a Set

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

The order of a map is defined as the order in which the iterators on the map’s collection views return their elements. Some map implementations,like the TreeMap class,make specific guarantees as to their order; others,like the HashMap class,do not.

所以,您不需要为此写一个单独的方法.像keySet()和entrySet()这样的方法将只返回插入顺序中的条目.

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

List<Long> keys = new ArrayList<>(target.keySet());

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

猜你在找的Java相关文章