如何获取hashmap的第一个键?

时间:2016-02-26 17:59:38

标签: java hashmap

我有以下.row { width: 100%; display: table; table-layout: fixed; } .col { display: table-cell; } @media screen and (max-width: 1300px) { .col { display: block; } .col + .col { display: table-header-group; background: gray; } }

如何在没有迭代的情况下获得第一个密钥:

<div class="row">
  <div class="col">
    left
  </div>
  <!-- /.col -->
  <div class="col">
    right
  </div>
  <!-- /.col -->
</div>
<!-- /.row -->

由于

7 个答案:

答案 0 :(得分:8)

由于您的问题对于您认为的“第一把钥匙”并不十分具体,我将列出几个选项。

只是键集中的第一个

String firstKey = map.keySet().iterator().next();

但不知道提供给您的信息。

最小的键

String firstKey = map.keySet().stream().min(String::compareTo).get();

最小值的关键

String firstKey = map.entrySet().stream().min((a,b) -> a.getValue().compareTo(b.getValue())).get().getKey();

第一个插入的密钥

这不适用于常规HashMap,因为它不会保留排序。请改用LinkedHashMap

Map<String, Double> map = new LinkedHashMap<>();
String firstKey = map.keySet().iterator().next();

答案 1 :(得分:3)

获得&#34;第一个&#34;的价值键,你可以使用它

map.get(map.keySet().toArray()[0]);

在Java8中,

您可以使用流。对于 TreeMap / LinkedHashMap ,其中排序很重要,您可以编写

map.entrySet().stream().findFirst();

对于 HashMap ,没有订单,因此findAny()可能会在不同的调用中返回不同的结果

map.entrySet().stream().findAny();

答案 2 :(得分:2)

Map<String, Double> map=new HashMap<>();
Map.Entry<String, Double> entry=map.entrySet().iterator().next();
 String key= entry.getKey();

但是HashMap不会维护插入顺序。您可以使用LinkedHashMap

答案 3 :(得分:2)

如果您使用Java 8,

map.entrySet().stream().findFirst().get().getKey()

答案 4 :(得分:1)

只需调用using一次,确保迭代器只在第一个位置。

it.next()

答案 5 :(得分:0)

如果您要迭代Map并希望按照插入条目的顺序迭代它,则应使用LinkedHashMap而不是HashMap

这是假设&#34;第一个键&#34;表示您插入的第一个。然后你可以按照插入条目的顺序迭代它,或者如果你只想要你说的第一个键,你可以调用map.keySet().toArray()[0]

答案 6 :(得分:0)

尝试使用LinkedHashMap而不是HashMap,它在调用keySet()时维护插入顺序。

LinkedHashMap