从一个列表创建多个列表(按特定字段对列表的对象进行分组)
Create multiple Lists from one (Group List's Objects by a specific field)
假设我有数组:
List<CustEnt> bulkList= CustRepo.fetchData();
//System.out.println(bulkList) -->
给我:
CustEct(name:"kasis",age:24,surname:"kumar"),CustEct(name:"samika",age:50,surname:"sharma"),CustEct(name:"manoj",age:84surname:"kumar")
OR
bulkList.get(1) --> CustEct(name:"kasis",age:24,surname:"kumar")
我想创建一个新数组,该数组由姓氏对象的第三个参数分组。
这样我的数组就变成了
ArrayFinal = [CustEct(name:"kasis",age:24,surname:"kumar"),CustEct(name:"samika",age:50,surname:"sharma")],CustEct(name:"manoj",age:84surname:"kumar")
所以当我们执行 .get(1) 时,我们会得到 kasis 和 samika 的对象。
需要有关 java 8 的帮助。
我听说我们可以使用 Map ,但是任何人都可以提供小代码示例或任何其他实施指南。
A Map
跟踪键值对。
- 您的密钥是姓氏字符串。
- 您的值是带有该姓氏的
CustEnt
个对象的列表。
Map<String, List<CustEnt>>
带有流和 lambda 的现代语法可以用简短的代码将对象放置在地图中。
类似于:
Map<String, List<CustEnt>> map = originalList.stream.collect(Collectors.groupingBy(CustEnt::getSurename));
Map<String, List<CustEntity>> NamesList
= bulkList.stream()
.collect(Collectors.groupingBy(CustEntity::getSurames));
for (Map.Entry<String, List<CustEntity>> entry: NamesList.entrySet()) {
ExcelGenerationService exp = new ExcelGenerationService( entry.getValue());
//service call
exp.export(entry.getKey());
}
假设我有数组:
List<CustEnt> bulkList= CustRepo.fetchData();
//System.out.println(bulkList) -->
给我:
CustEct(name:"kasis",age:24,surname:"kumar"),CustEct(name:"samika",age:50,surname:"sharma"),CustEct(name:"manoj",age:84surname:"kumar")
OR
bulkList.get(1) --> CustEct(name:"kasis",age:24,surname:"kumar")
我想创建一个新数组,该数组由姓氏对象的第三个参数分组。 这样我的数组就变成了
ArrayFinal = [CustEct(name:"kasis",age:24,surname:"kumar"),CustEct(name:"samika",age:50,surname:"sharma")],CustEct(name:"manoj",age:84surname:"kumar")
所以当我们执行 .get(1) 时,我们会得到 kasis 和 samika 的对象。
需要有关 java 8 的帮助。 我听说我们可以使用 Map ,但是任何人都可以提供小代码示例或任何其他实施指南。
A Map
跟踪键值对。
- 您的密钥是姓氏字符串。
- 您的值是带有该姓氏的
CustEnt
个对象的列表。
Map<String, List<CustEnt>>
带有流和 lambda 的现代语法可以用简短的代码将对象放置在地图中。
类似于:
Map<String, List<CustEnt>> map = originalList.stream.collect(Collectors.groupingBy(CustEnt::getSurename));
Map<String, List<CustEntity>> NamesList
= bulkList.stream()
.collect(Collectors.groupingBy(CustEntity::getSurames));
for (Map.Entry<String, List<CustEntity>> entry: NamesList.entrySet()) {
ExcelGenerationService exp = new ExcelGenerationService( entry.getValue());
//service call
exp.export(entry.getKey());
}