Java 获取映射中的最后一个值

Java 获取映射中的最后一个值,java,map,Java,Map,如何获取地图的最后一个和第一个键/值? 例如: Map<String,Integer> ret = new HashMap<String,Integer>(); 您无法使用HashMap执行此操作,因为键没有排序。考虑使用 可以使用以下方法获取最后一个元素: public <K,V> Map.Entry<K,V> getLast(LinkedHashMap<K,V> map) { Iterator<Map.Entry&l

如何获取地图的最后一个和第一个键/值? 例如:

Map<String,Integer> ret = new HashMap<String,Integer>();
您无法使用HashMap执行此操作,因为键没有排序。考虑使用

可以使用以下方法获取最后一个元素:

public <K,V> Map.Entry<K,V> getLast(LinkedHashMap<K,V> map) {
    Iterator<Map.Entry<K,V>> iterator = map.entrySet().iterator();
    Map.Entry<K, V> result = null;
    while (iterator.hasNext()) {
        result = iterator.next();
    }
    return result;
}
您无法使用HashMap执行此操作,因为键没有排序。考虑使用

可以使用以下方法获取最后一个元素:

public <K,V> Map.Entry<K,V> getLast(LinkedHashMap<K,V> map) {
    Iterator<Map.Entry<K,V>> iterator = map.entrySet().iterator();
    Map.Entry<K, V> result = null;
    while (iterator.hasNext()) {
        result = iterator.next();
    }
    return result;
}

由于没有定义的顺序,如果你运气不好,你基本上会得到一个随机元素


否则您可以按照HashMap->getEntrySet->toArray->getsize-1

的方式进行操作,因为没有定义顺序,如果运气不好,基本上会得到一个随机元素


否则,您可以选择HashMap->getEntrySet->toArray->getsize-1

在HashMap中,区分第一个和最后一个是不可能的,或者更像是没有意义的。如果要保留插入顺序,可能需要使用LinkedHashMap。但是再一次,您应该详细说明您的问题,让我们知道需要这样做的确切用例。

在HashMap中,区分第一个和最后一个是不可能的,或者更像是没有意义的。如果要保留插入顺序,可能需要使用LinkedHashMap。但是再一次,你应该详细说明你的问题,让我们知道需要这个的确切用例。

HashMap是一个无序的映射,所以它没有任何“第一”或“最后”的概念。 如果希望映射按插入顺序保留内容,可以使用LinkedHashMap,然后迭代其entrySet方法以拾取第一个和最后一个值。 您也可以使用SortedMap接口impl。它通过键的自然顺序或提供的比较器对插入的条目进行排序。

哈希映射是无序映射,因此它没有“first”或“last”的概念。 如果希望映射按插入顺序保留内容,可以使用LinkedHashMap,然后迭代其entrySet方法以拾取第一个和最后一个值。
您也可以使用SortedMap接口impl。通过键的自然顺序或提供的比较器对插入的条目进行排序。

除非您使用a,在这种情况下,您可以获取第一个和最后一个键。

除非您使用a,在这种情况下,您可以获取第一个和最后一个键。

从技术上讲,您可以通过以下方式从地图中获取第一个对象:

Map.Entry<Integer,Integer> entry = map.entrySet().iterator().next();
最后一个途径是:

Iterator<Map.Entry<Integer,Integer>> iter = map.entrySet().iterator();
Map.Entry<Integer,Integer> entry = null;
while(iter.hasNext()) {
    entry = iter.next();
}
// now you have the "last" item in the map stored in 'entry'

但是,正如在其他答案中所述,这并不意味着任何HashMap。但是,将其替换为LinkedHashMap,您可以使用上述代码获取第一个和最后一个插入的对。

从技术上讲,您可以通过以下方式从映射中获取第一个对象:

Map.Entry<Integer,Integer> entry = map.entrySet().iterator().next();
最后一个途径是:

Iterator<Map.Entry<Integer,Integer>> iter = map.entrySet().iterator();
Map.Entry<Integer,Integer> entry = null;
while(iter.hasNext()) {
    entry = iter.next();
}
// now you have the "last" item in the map stored in 'entry'

但是,正如在其他答案中所述,这并不意味着任何HashMap。但是,用LinkedHashMap替换它,你就可以用上面的代码得到第一个和最后一个插入的对。

哈希映射是没有顺序的,所以“first”和“last”并不真正意味着什么。可能是@t.J.Crowder的重复谢谢:我只是写了一个更详细的答案。哈希映射没有顺序,所以“first”和“last”并不是什么意思。可能是@t.J.Crowder的副本谢谢:我刚刚写了一个答案,有点详细。按键大小按键大小排列插入条目的顺序是什么???我要换个说法+1对于来自TreeMap javadocs的REST:映射根据其键的自然顺序进行排序,或者通过在映射创建时提供的比较器进行排序。钥匙的尺寸没有问题,特里克,修好了。大小是整数的自然顺序,整数是OP示例中的键。按键大小按键大小对插入的条目排序???我要换个说法+1对于来自TreeMap javadocs的REST:映射根据其键的自然顺序进行排序,或者通过在映射创建时提供的比较器进行排序。钥匙的尺寸没有问题,特里克,修好了。大小是int的自然顺序,int是OP示例中的关键。