java - 如何在Java中包含字符串值和整数键的映射中搜索部分 "value"?

标签 java search dictionary collections linked-list

我有下面的代码,用于通过将其转换为字符串并使用 contains() 方法来搜索 Map 映射中的“值”的一部分。问题是,如果我搜索任何整数值(例如“4”),conatins() 方法将返回 true,因为它找到与“key”的匹配项。

 public ArrayList<Map<Integer, String>> search(final ArrayList<Map<Integer, String>> myMapList, String searchTerm)
{
    ArrayList<Map<Integer, String>> newListOfMaps = new ArrayList<Map<Integer, String>>();

    for (Map<Integer, String> map : myMapList)
    {
        if (map.toString().contains(searchTerm))
        {
            newListOfMaps.add(map);
        }
    }
    return newListOfMaps;
}

示例数据:

  • myMapList.get(0)= {1=笔记本电脑、2=4、3=stackover、4=流}
  • myMapList.get(1)= {1=笔记本电脑、2=个人电脑、3=stackover、4=流}

情况 1:如果我的“searchTerm”是“top”,我希望返回两个 map 。

情况 2:如果我的“searchTerm”是“4”,我只想返回第一个 map 。

但我要把它们都找回来。

是否有更好的 map 搜索方法?

最佳答案

我们必须搜索每个映射中的每个值(我猜,除非我们使用 Java 8 lambda 表达式)

    public static ArrayList<Map<Integer, String>> search(final ArrayList<Map<Integer, String>> myMapList, String searchTerm)
    {
        ArrayList<Map<Integer, String>> newListOfMaps = new ArrayList<Map<Integer, String>>();

        for (Map<Integer, String> map : myMapList)
        {

            for (String value : map.values())
            {
                if (value.contains(searchTerm)){
                    newListOfMaps.add(map);
                    break;
                }
            }
        }
        return newListOfMaps;
    }
}

可以在这里找到可编辑的代码:https://ideone.com/0Fs6uG

编辑:使用 lambda 表达式,整个方法可以替换为以下任一内容:

return myMapList.stream().filter(map -> map.values().toString().contains(searchTerm)).collect(Collectors.toList());

return myMapList.stream().filter(map -> map.values().stream().anyMatch(str -> str.contains(searchTerm))).collect(Collectors.toList());

我更喜欢后者,因为当本身包含逗号时,它可以避免出现困难。

关于java - 如何在Java中包含字符串值和整数键的映射中搜索部分 "value"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34855866/

相关文章:

java - 什么是原始类型,为什么我们不应该使用它呢?

c# - 从 C# 中的给定整数数组中获取第 k 个公共(public)元素

Java词库

python - 计算有多少值归因于 python (3.2) 字典的键

java - 如何将源代码导入到eclipse中

Java动态地将参数包装到对象中?

Java:如何读取目录文件夹,计算并显示文件数量并复制到另一个文件夹?

php - 我正在制作一个 HTML 表单,我需要在数据库中保存复选框信息,但此信息也需要可搜索。最好的方法?

javascript - 判断是否输入了字符串 "geb."

javascript - 如何在 map 上使用 Object.observe?