提问者:小点点

JavaHashMap多个键,灵活分配多个值


我的Java代码有问题。我想在一个键中存储多个值,但我想灵活地存储它们。这意味着我从一个文本文件中读取,每行是一个单词。为了储存它们,我想建立成对的单词。例如:

字1/字2

单词2/单词3

单词3/单词4

我已经稍微改变了这种方法。我想将键的值存储在数组列表中。这意味着每次出现新键时都会存储一个新的 Arraylist 和键,但如果键在映射中,我想将它们存储在这个键的列表中。这可能吗?

我们必须将它们存储在哈希图中。但我无法让它发挥作用:

private HashMap<String, ArrayList<String>> hmap = new HashMap<String, ArrayList<String>>();

    private ArrayList<String> wort2;

    public GrammelotH(String filename) throws IOException {
        String fixWort = ".";

        BufferedReader br = new BufferedReader(new FileReader(filename));
        while (br.ready()) {
            String line = br.readLine();
            if (hmap.containsKey(fixWort)) {
                hmap.put(fixWort, wort2.add(line));
            }else {
                hmap.put(fixWort, new ArrayList<String>().add(line));
            }

            fixWort = line;
        }

        br.close();

    }

问题是看跌订单。你们中的任何人知道如何获得

hmap.put(fixWort, new ArrayList<String>().add(line));

hmap.put(fixWort, wort2.add(line));

工作?

谢谢你的帮助!再见!


共1个答案

匿名用户

我想我会看到这样的东西

List l = hmap.get(line);
if (l != null) {
     l.add(line));
}else {
     l = new ArrayList<String>();
     l.add(line)
     hmap.put(line, l);
}

因此,您可以查看地图是否已经包含您刚刚从文件中读取的< code >行。如果是这样,您只需将它添加到关联列表中。如果没有,请创建一个列表,将< code>line添加到列表中,然后将两者都添加到地图中。