如何在Java中为.txt文件的每个唯一列值创建ArrayList?
我正在编写一个逐行读取.txt文件的程序,我想为一列的每个“唯一”值创建一个如何在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
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()));
地图
类似的东西?你可能也会发现有趣的东西。