【问题标题】:JAVA: How to search a map?JAVA:如何搜索地图?
【发布时间】:2013-03-25 21:38:18
【问题描述】:

我有一个 Map,它的键和集合(包含整数)的值是字符串

假设我的钥匙看起来像“苹果”、“香蕉”、“橙子”等。

用户输入文本,我将其保存为字符串变量。如何在我的地图中搜索相同的键? 因此,如果用户输入“apple”,我如何将该字符串提供给方法并让该方法在我的地图中搜索“apple”键并返回与其关联的整数集(值)?

谢谢

【问题讨论】:

  • 为什么这个问题被否决了?我得到了答案,显然不是重复或模糊的。好吧,有一个错误的假设。但我们不是来纠正它吗?

标签: java search map


【解决方案1】:

使用get 方法

 Set<Integer> values = map.get("apple");

【讨论】:

    【解决方案2】:

    您并没有真正搜索地图,而是从中检索值:

    public static void main(String[] args) {
        final Map<String, Set<Integer>> myMap = new HashMap<>();
        //put new values into map
        myMap.put("MyString", new HashSet<Integer>());
        //get Set from Map
        final Set<Integer> mySet = myMap.get("myString");
    }
    

    【讨论】:

    • 答案确实与问题有关。它回答了这个问题,但这个问题是基于一个错误的假设,我们应该解决这个问题。因此@user2242801 做了一个更好的案例
    • 不确定@DavidZwart,用户说“我有一个 Map,它的键和集合(包含整数)的值是字符串” - 所以我假设他们有一个Map&lt;String, Set&lt;Integer&gt;&gt;。我认为 user2242801 做出了错误的假设;尤其是因为他们谈论Lists...
    【解决方案3】:

    返回与其关联的整数集(值)?

    地图需要不同的键,因此我假设您的地图声明看起来像Map&lt;String, List&lt;Integer&gt;&gt; myMap

    检查映射中是否存在键: myMap.containsKey(key) 例如 myMap.containsKey("apple")

    要获取与键关联的值: myMap.get(key) 例如 myMap.get("apple")

    【讨论】:

    • 这里有不少错别字,请指正。另外,使用back-tickshighlight code
    【解决方案4】:

    这是一个实现您需要的代码示例:

    public <K, V> Set<K> getKeys(Map<K, V> map, V value) {
        Set<K> keys = new HashSet<>();
        for (Entry<K, V> entry : map.entrySet()) {
            if (entry.getValue().equals(value)) {
                keys.add(entry.getKey());
            }
        }
        return keys;
    }
    

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-07-17
    • 1970-01-01
    • 1970-01-01
    • 2018-08-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多