【问题标题】:Retrieve List of keys from map从地图中检索键列表
【发布时间】:2021-04-20 05:53:30
【问题描述】:
HashMap<String,String> map=new HashMap<>();
        map.put("name","x");
        map.put("value", "yes");
HashMap<String,String> map1=new HashMap<>();
        map1.put("name","y");
        map1.put("value", "yes");

我想如何获取特定键的值 我想要像(x,y)这样的解决方案

【问题讨论】:

  • 到目前为止你尝试了什么?

标签: java hashmap


【解决方案1】:

为了获取hashMap的key set,可以调用HashMap#keySet()

为了得到HashMap的值集,可以调用hashMap#values()

现在,如果您想获取特定键的值,可以使用 HashMap#entrySet() 来完成,它返回一组具有相对值的每个键,然后使用 if 语句检查 eery 一个,然后您完成了

doc

【讨论】:

    【解决方案2】:

    Map 有方法 "keySet()" 用于获取键集,从 Set 中获取 List 您可以使用 ArrayList 的构造函数:

    List<String> result = new ArrayList<>(map.keySet());
    

    从列表中获取元素:

    for(String name: result){
       if(name.equals("someName")){
       System.out.println(name);
      }
     }
    

    【讨论】:

    • 我想如果我使用 get("name"),解决方案是 (x,y) 你能给出解决方案吗
    • 要按名称获取,您应该使用地图,因为可以通过键访问。如果您需要 List ,则无法在没有循环的情况下按键获取某些元素。要从循环中获取名称,请参见上面的示例
    • @Dmitrii Bykov,您还应该提到删除重复字符串的方法,该方法是被覆盖的 equals 方法,public Boolean equals(Object V1, Object V2) 从键集中消除重复字符串。因此它是我的反对票。
    【解决方案3】:

    请注意,如果您使用字符串作为键值,那么您需要包含代码以消除映射中重复的字符串值。这就是为什么将 String 作为键不是一个好主意的原因。否则,编写特定代码以通过迭代 Hashmap(KeySet) 中的键值来消除 hashmap 中的重复字符串值。再构造一个 Hashmap 并将两个映射中的值推送到另一个映射中。再一次,请注意第三张地图中重复的x值(如上所述,编写消除重复x值的代码)。

    【讨论】:

      猜你喜欢
      • 2021-08-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-08-21
      • 1970-01-01
      • 1970-01-01
      • 2012-09-22
      • 2019-08-29
      相关资源
      最近更新 更多