如何方便地从LinkedHashMap中获取第一个元素或最后一个元素?

how to conveniently get first element or last element from LinkedHashMap?

我有一个结构图:

Map<String, Double> map = new LinkedHashMap<>();

我不知道key,但是我想取第一个元素和最后一个元素,请问如何方便地实现。

一种方法:

    Map<String, Double> map = new LinkedHashMap<>();
    map.put("one", 2.0);
    map.put("two", 12.0);
    map.put("three", 44.0);
    String lKeyFirst = null;
    String lKeyLast = null;
    if (!map.isEmpty()){
      lKeyFirst = map.keySet().iterator().next();
      for(String key : map.keySet()){
        lKeyLast = key;
      }
      System.out.println("First key: " +lKeyFirst);
      System.out.println("Last key: " +lKeyLast);
    }

输出:

First key: one

Last key: three

当然 isEmpty 在这种情况下永远不会为假。

编辑:

@Test
public void testMapOneValue() {
Map<String, Double> map = new LinkedHashMap<>();
map.put("one", 2.0);
String lKeyFirst = null;
String lKeyLast = null;
if (!map.isEmpty()){
  lKeyFirst = map.keySet().iterator().next();
  for(String key : map.keySet()){
    lKeyLast = key;
  }
  System.out.println("First key: " +lKeyFirst);
  System.out.println("Last key: " +lKeyLast);
}
}

输出:

First key: one

Last key: one

获得第一个很容易 - 请求一个 iterator 并获得 next

// Needs null checks etc.
String first = map.keySet().iterator().next();

获取最后一个在 Java get last element of a collection 中介绍。