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

如何在Java中为.txt文件的每个唯一列值创建ArrayList?,java,arraylist,Java,Arraylist,我正在编写一个逐行读取.txt文件的程序,我想为一列的每个“唯一”值创建一个ArrayList .txt文件的外观: NAME AGE COUNTRY PHONE NUMBER Peter 28 USA 00112233 John 25 England 11223344 Justin 22 A

我正在编写一个逐行读取.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

嗯,使用域对象更容易,例如:

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
}
列出readfromFile(字符串文件名){
//为每个读取行创建用户
}
然后使用流Api按所需列进行分组,如:

Map<String, List<User>> usersByCountry = users.stream().collect(Collectors.groupingBy(User::getCountry));
Map 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())));
Map userNamesByCountry=users.stream().collect(Collectors.groupingBy(User::getCountry,LinkedHashMap::new,Collectors.mapping(User::getName,Collectors.toList()));
地图
类似的东西?你可能也会发现有趣的东西。