gpt4 book ai didi

java - 将 csv 文件读入 HashMap>

转载 作者:行者123 更新时间:2023-11-30 08:35:09 25 4
gpt4 key购买 nike

我一直在尝试制作一个 java 程序,其中逐行读取制表符分隔的 csv 文件,并将第一列(字符串)添加为散列映射的键,将第二列(整数)添加) 是它的值(value)。

在输入文件中,有重复的键但具有不同的值,所以我打算将值添加到现有键以形成值的 ArrayList。

我想不出最好的方法,想知道是否有人可以提供帮助?

谢谢

编辑:对不起,伙计们,到目前为止我已经处理了代码:我应该添加第一列是值,第二列是键。

public class WordNet {

private final HashMap<String, ArrayList<Integer>> words;
private final static String LEXICAL_UNITS_FILE = "wordnet_data/wn_s.csv";

public WordNet() throws FileNotFoundException, IOException {

words = new HashMap<>();
readLexicalUnitsFile();
}

private void readLexicalUnitsFile() throws FileNotFoundException, IOException{

BufferedReader in = new BufferedReader(new FileReader(LEXICAL_UNITS_FILE));
String line;

while ((line = in.readLine()) != null) {
String columns[] = line.split("\t");
if (!words.containsKey(columns[1])) {
words.put(columns[1], new ArrayList<>());
}

}
in.close();

}

最佳答案

你很接近

String columns[] = line.split("\t");
if (!words.containsKey(columns[1])) {
words.put(columns[1], new ArrayList<>());
}

应该是

String columns[] = line.split("\t");
String key = columns[0]; // enhance readability of code below
List<Integer> list = words.get(key); // try to fetch the list
if (list == null) // check if the key is defined
{ // if not
list = new ArrayList<>(); // create a new list
words.put(key,list); // and add it to the map
}
list.add(new Integer(columns[1])); // in either case, add the value to the list

回应OP的评论/问题

... the final line just adds the integer to the list but not to the hashmap, does something need to be added after that?

声明之后

List<Integer> list = words.get(key);

有两种可能。如果 list 为非空,则它是对 map 中已有列表的引用(而非副本)。

如果 listnull,那么我们知道映射不包含给定的键。在这种情况下,我们创建一个新的空列表,将变量 list 设置为对新创建列表的引用,然后将列表添加到键的映射中。

无论哪种情况,当我们到达

list.add(new Integer(columns[1]));

变量 list 包含对 map 中已有的 ArrayList 的引用,可以是之前存在的,也可以是我们刚刚创建和添加的。我们只是为其添加值(value)。

关于java - 将 csv 文件读入 HashMap<String, ArrayList<Integer>>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38422740/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com