如何为Java中的.txt文件的每个唯一列值创建一个ArrayList?

时间:2017-02-03 09:37:28

标签: java arraylist

我正在编写一个逐行读取.txt文件的程序,我想为一列的每个'唯一'值创建ArrayList

.txt文件的样子:

NAME          AGE          COUNTRY          PHONE NUMBER
Peter         28           USA              00112233
John          25           England          11223344
Justin        22           Australia        22334455
Daisey        24           Canada           33445566
Harry         27           England          44556677
Laura         25           England          55667788
Gary          28           USA              66778899

例如,我想为每个国籍创建一个ArrayList,并将相应的名称作为元素。

所以,这个:

ArrayList USA:       Peter, Gary
ArrayList England:   John, Harry, Laura
ArrayList Australia: Justin
ArrayList Canada:    Daisey

在运行程序之前,我不想自己创建ArrayLists。因为我所谈论的真实列有很多不同的值,所以应该制作大量的ArrayList。有谁知道如何让程序为每个唯一国籍创建Arraylist,并为此ArrayList添加相应的名称?

1 个答案:

答案 0 :(得分:1)

嗯,使用域对象更容易:

class User {
    String name;
    String country;
    int age;
    String phone;
    // getters and setters omitted
}

代码中的某处会有以下方法:

List<User> readfromFile(String fileName) {
    // create User for each read line
}

然后使用Stream Api按所需列分组,如:

Map<String, List<User>> usersByCountry = users.stream().collect(Collectors.groupingBy(User::getCountry));

如果您只想按国家/地区分组的用户名:

Map<String, List<String>> userNamesByCountry = users.stream().collect(Collectors.groupingBy(User::getCountry, LinkedHashMap::new, Collectors.mapping(User::getName, Collectors.toList())));