【问题标题】:java - searching a word in a map with list as valuejava - 在地图中以列表为值搜索单词
【发布时间】:2017-02-27 21:29:42
【问题描述】:

我有一个 .txt:

  1. 行:x、慕尼黑、c、e、f
  2. line: y, Berlin, ad, uf
  3. 行:z, Hamburg, of, bf

所有单词都用','分隔。

此 txt 中一行的前 2 个字符串用于构造函数。 3. 及以下字符串进入列表。 例如,关键是:构造函数形式的 a b 该值是一个 ArrayList,其中包含:c、e、f。所以 3 个元素。

String filePath = "....txt";

        List<String> itemlist = new ArrayList<String>();
        HashMap<Corporation, List> corp = new HashMap<Corporation, List>();

        String line;
        BufferedReader reader = new BufferedReader(new FileReader(filePath));
        while ((line = reader.readLine()) != null) {
            String[] parts = line.split(",", 3);
            if (parts.length >= 3) {
                String name = parts[0]; // key=name, value= address
                String address = parts[1];
                String info = parts[2];
                itemlist = new ArrayList<String>(Arrays.asList(info.split(",")));
                Corporation cor = new Corporation(name, address);
                corp.put(cor, itemlist);
            }
        }

一切正常。 现在我需要在 Map 的一个 ArrayLists 中搜索一个字符串。 例如,我搜索字符串“bf”并打印它找到了字符串以及使用地图右键的位置。例如“bf”:它将打印“bf found at "z, Hamburg"”。

for (Entry<Corporation, List> entry : corp.entrySet()) {
            if (entry.getValue().equals("bf")) {
                System.out.println("Found at " + );
                System.out.println(entry.getKey());
            } else {
                System.out.println("String not found.");
            }
        }

我的这部分代码不能按我的意愿工作。我该怎么做?

【问题讨论】:

  • 请定义“不起作用”输出/预期

标签: java string collections frameworks


【解决方案1】:
entry.getValue().equals("bf")

比较一个列表和一个字符串。这永远不会是真的。

你很可能想要这个:

entry.getValue().contains("bf")

【讨论】:

    【解决方案2】:

    if (entry.getValue().equals("bf"))ListString 进行比较。

    试试这个if (entry.getValue().contains("bf"))

    【讨论】:

    • with System.out.println(corp.entrySet());我得到输出:
    • [公司[名称=x,地址=慕尼黑]=[c,e,f],公司[名称=y,地址=柏林]=[广告,uf],公司[名称=z , 地址= Hamburg]=[ of, bf]]
    • 我认为您在列表中的条目之前有一个空格。试试entry.getValue().contains(" bf"),看看你是否收到"Found at"
    猜你喜欢
    • 2021-10-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-21
    • 2013-09-17
    • 2019-03-03
    相关资源
    最近更新 更多