我的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));
工作?
谢谢你的帮助!再见!
我想我会看到这样的东西
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添加到列表中,然后将两者都添加到地图中。