在不使用键的情况下在 LinkedHashMap 中插入值
Inserting values in LinkedHashMap without using the key
我有一个 CSV 格式的 table 数据。第一行包含所有列名(键),所有后续行都是记录(值),如下所示:
ID,Name,Contact,Address
1,Alex,987654321,CA USA
2,Bob,4489398,LA USA
3,Marley,7236487,Washington
我正在阅读此文件并尝试将记录作为键值对存储在 LinkedHashMap 中。这是我的代码,用于显示我正在尝试做的事情。我的问题作为注释写在代码中。
public static void readCSV() throws IOException {
BufferedReader br = new BufferedReader(new FileReader("table.csv"));
Map<String, ArrayList<String>> map = new LinkedHashMap<>();
String line = br.readLine();
String[] keys = line.split(",");
/*insert all keys with a corresponding empty arraylist as value to store
all values of a particular key. ie each arralist will contain all values
of individual columns. Since it is a linkedhashmap, keys are stored in
same order as they appear in the csv file*/
for (String key : keys) {
map.put(key, new ArrayList<String>());
}
while((line = br.readLine())!=null){
String[] values = line.split(",");
for (String value : values) {
/*here I want to get the arraylists sequentially to store value.
I know the first value goes in the first arraylist, second goes
to second arraylist and so on.
Is there a way to do this without using the key here??
*/
}
}
}
您可以使用 Iterator
遍历 Map
的值:
while((line = br.readLine())!=null){
String[] values = line.split(",");
Iterator<ArrayList<String>> iter = map.values().iterator ();
for (String value : values) {
if (iter.hasNext()) {
iter.next().add(value);
}
}
}
我有一个 CSV 格式的 table 数据。第一行包含所有列名(键),所有后续行都是记录(值),如下所示:
ID,Name,Contact,Address
1,Alex,987654321,CA USA
2,Bob,4489398,LA USA
3,Marley,7236487,Washington
我正在阅读此文件并尝试将记录作为键值对存储在 LinkedHashMap 中。这是我的代码,用于显示我正在尝试做的事情。我的问题作为注释写在代码中。
public static void readCSV() throws IOException {
BufferedReader br = new BufferedReader(new FileReader("table.csv"));
Map<String, ArrayList<String>> map = new LinkedHashMap<>();
String line = br.readLine();
String[] keys = line.split(",");
/*insert all keys with a corresponding empty arraylist as value to store
all values of a particular key. ie each arralist will contain all values
of individual columns. Since it is a linkedhashmap, keys are stored in
same order as they appear in the csv file*/
for (String key : keys) {
map.put(key, new ArrayList<String>());
}
while((line = br.readLine())!=null){
String[] values = line.split(",");
for (String value : values) {
/*here I want to get the arraylists sequentially to store value.
I know the first value goes in the first arraylist, second goes
to second arraylist and so on.
Is there a way to do this without using the key here??
*/
}
}
}
您可以使用 Iterator
遍历 Map
的值:
while((line = br.readLine())!=null){
String[] values = line.split(",");
Iterator<ArrayList<String>> iter = map.values().iterator ();
for (String value : values) {
if (iter.hasNext()) {
iter.next().add(value);
}
}
}