【问题标题】:Get Key from Value in Map with Arraylist?使用 Arraylist 从 Map 中的值获取键?
【发布时间】:2020-04-29 10:57:02
【问题描述】:

我正在用 Java 编写程序。我决定将 Map 与 ArrayList 结合使用。

public static Map<String, List<String>> users = new HashMap<>();

所以,我认为我的问题并不复杂:如您所见,有一个 Key(字符串),每个 Key 都有一个自己的 ArrayList。我有一个方法,它获取我的地图(用户)的一个值。方法没那么重要。但是现在我想知道,哪个key(String)属于我的值,方法找到了哪个?

【问题讨论】:

    标签: java arraylist hashmap key key-value


    【解决方案1】:

    如果不维护一个不同的集合作为一种索引(可能有点矫枉过正),没有比遍历所有条目更好的方法了。

    使用流

    final String searchTerm = "whatever";
    final String user = users.entrySet().stream()
        .filter(entry -> entry.getValue().contains(searchTerm))
        .findFirst()
        .map(Map.Entry::getKey)
        .orElseThrow(() -> new RuntimeException("No matching user for " + searchTerm));
    

    命令式风格

    String user = null;
    for (Map.Entry<String, List<String>> entry : users.entrySet())
    {
        if (entry.getValue().contains(searchTerm))
        {
            user = entry.getKey();
            break;
        }
    }
    if (user == null)
    {
        throw new RuntimeException("No matching user for " + searchTerm); 
    }
    

    【讨论】:

      猜你喜欢
      • 2015-02-13
      • 1970-01-01
      • 1970-01-01
      • 2016-09-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-11-18
      相关资源
      最近更新 更多