我正在编写一个逐行读取.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
添加相应的名称?
答案 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())));