【发布时间】:2016-04-03 00:52:44
【问题描述】:
我使用的文件包含:
"word","wordtype","definition"
"Base","n.","The lower part of a robe or petticoat."
"Base","n.","An apron."
输出如下:
key: "base" value: ["word""wordtype""definition", "Base""n.""The lower part of a robe or petticoat.", "Base""n.""An apron."]
key: "word" value: ["word""wordtype""definition", "Base""n.""The lower part of a robe or petticoat.", "Base""n.""An apron."]
期望的结果:
key: "base" value: [ "Base""n.""The lower part of a robe or petticoat.", "Base""n.""An apron."]
key: "word" value: ["word""wordtype""definition"]
有人能指出正确的方向吗?
BufferedReader br = new BufferedReader( new InputStreamReader(new FileInputStream(file)));
String line = null;
TreeMap<String, List<String>> def = new TreeMap<String, List<String>>();
List<String> values = new ArrayList<String>();
try {
while ((line = br.readLine()) != null) {
String []parts =line.split(",");
String key = null;
for (int i = 0; i < parts.length; i++){
key = parts[0];
}
values.add(parts[0] + parts[1] + parts[2]);
def.put(key.toLowerCase(), values);
}
【问题讨论】:
-
对于初学者:
key = parts[0]不应处于循环中;values应该是在您的 while 循环中定义的一个新变量,并且您应该一次将要添加的每个部分添加到值列表中,而不是将它们与 + 连接在一起。 -
您不能为此使用地图。一个
key必须对应一个(或没有)value。如果你想要类似的功能;你可以使用List<Map.Entry<String, String>>。