HashMap - 获取First Key值

时间:2014-10-07 06:54:37

标签: java hashmap

以下是HashMap中包含的值

statusName {Active=33, Renewals Completed=3, Application=15}

获取第一个密钥(即活动)的Java代码

Object myKey = statusName.keySet().toArray()[0];

我们如何收集第一个Key" Value" (即33),我想存储" Key"和"价值"在单独的变量中。

11 个答案:

答案 0 :(得分:172)

你可以试试这个:

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

请注意,HashMap不保证广告订单。使用LinkedHashMap保持订单不变。

例如:

 Map<String,String> map = new LinkedHashMap<>();
 map.put("Active","33");
 map.put("Renewals Completed","3");
 map.put("Application","15");
 Map.Entry<String,String> entry = map.entrySet().iterator().next();
 String key= entry.getKey();
 String value=entry.getValue();
 System.out.println(key);
 System.out.println(value);

输出:

 Active
 33

答案 1 :(得分:45)

首先获得&#34;&#34;值:

map.values().toArray()[0]

获得&#34;第一个&#34;的价值键:

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

注意:上面的代码已经过测试并且有效。

我说&#34;首先&#34;因为HashMap条目没有排序。

但是,LinkedHashMap以与插入顺序相同的顺序迭代其条目 - 如果插入顺序很重要,您可以将其用于地图实现。

答案 2 :(得分:27)

Java 8的做法,

String firstKey = map.keySet().stream().findFirst().get();

答案 3 :(得分:4)

  

我们如何收集第一个关键&#34;价值&#34; (即33)

使用youMap.get(keyYouHave),您可以获得它的值。

  

想要存储Both&#34; Key&#34;和&#34;价值&#34;在单独的变量

是的,您可以将其分配给变量。

等等.........它没有结束。

如果您(业务逻辑)依赖于插入和检索的顺序,您将看到奇怪的结果。地图没有订购,他们不会在订单中存储。请注意这个事实。使用一些替代方案来保留您的订单。可能是LinkedHashMap

答案 4 :(得分:4)

您也可以尝试使用此方法来获取整个第一个条目,

if ($.trim(data)) {
  $.each(data, function (i, dataitem) {
    // Table element being constructed.
    // Not yet inserted into the DOM. 
    var $table = $("<table>");
    $.each(dataitem, function (i, item) {                              
      var $tr = $('<tr>').prepend(
              $('<td>').text(item.productstore.products.name),
              $('<td>').text(item.quantity),

              ).prependTo($table);
    });
    // Insert the constructed table into the DOM.
    $table.prependTo("#output");
  });
}

仅获取第一个条目的密钥,

Map.Entry<String, String> entry = map.entrySet().stream().findFirst().get();
String key = entry.getKey();
String value = entry.getValue();

仅获取第一个条目的值,

String key = map.entrySet().stream().map(Map.Entry::getKey).findFirst().get();
// or better
String key = map.keySet().stream().findFirst().get();

此外,如果您知道自己在做什么,并且希望获得地图的第二项(与第三项相同),则应该尝试这样做,

String value = map.entrySet().stream().map(Map.Entry::getValue).findFirst().get();
// or better
String value = map.values().stream().findFirst().get();

答案 5 :(得分:1)

请记住,一般来说,地图中的插入顺序并未受到尊重。试试这个:

    /**
     * Get the first element of a map. A map doesn't guarantee the insertion order
     * @param map
     * @param <E>
     * @param <K>
     * @return
     */
    public static <E,K> K getFirstKeyValue(Map<E,K> map){
        K value = null;
        if(map != null && map.size() > 0){
            Map.Entry<E,K> entry =  map.entrySet().iterator().next();
            if(entry != null)
                value = entry.getValue();
        }
        return  value;
    }

我只在确定map.size() == 1

时使用此功能

答案 6 :(得分:0)

请注意,您应该注意,您的逻辑流决不能依赖于按某种顺序访问HashMap元素,因为HashMap s未被排序Collection且不是他们的目的是什么。 (您可以在this post)中阅读有关odered和sorter集合的更多信息。

回到帖子,你已经通过加载第一个元素键完成了一半的工作:

Object myKey = statusName.keySet().toArray()[0];

只需致电map.get(key)即可获得相应的值:

Object myValue = statusName.get(myKey);

答案 7 :(得分:0)

改善whoami的答案。由于findFirst()返回了Optional,因此 确认是否有价值的好方法。

 var optional = pair.keySet().stream().findFirst();

 if (!optional.isPresent()) {
    return;
 }

 var key = optional.get();

此外,有人评论说找到HashSet的第一把钥匙是不可靠的。但是有时候我们有HashMap对;也就是说,在每张地图中,我们都有一个键和一个值。在这种情况下,快速找到此类对的第一把钥匙很方便。

答案 8 :(得分:0)

这也是一种不错的方法:)

Map<Integer,JsonObject> requestOutput = getRequestOutput(client,post);
int statusCode = requestOutput.keySet().stream().findFirst().orElseThrow(() -> new RuntimeException("Empty"));

答案 9 :(得分:0)

Kotlin 答案

获取第一个键,然后获取键的值。 Kotlin 有“first()”函数:

val list = HashMap<String, String>() // Dummy HashMap.

val keyFirstElement = list.keys.first() // Get key.

val valueOfElement = list.getValue(keyFirstElement) // Get Value.

答案 10 :(得分:-2)

您也可以尝试以下内容:

Map.Entry<String, Integer> entry = myMap.firstEntry();
System.out.println("First Value = " + entry);