java 8 Streamグループ分けの使い方
2200 ワード
概要
今日は開発中に一つのグループの問題に遭遇しました。当時のデータベース用のJPAが開発したので、元のSQLを書いてグループ化処理をしたくなかったです。そこで、jdk 8のグループを調べました。まずグループの例を見ます。
今日は開発中に一つのグループの問題に遭遇しました。当時のデータベース用のJPAが開発したので、元のSQLを書いてグループ化処理をしたくなかったです。そこで、jdk 8のグループを調べました。まずグループの例を見ます。
@Data
public class Student {
private String name;
private int age;
private int code;
public Student(String name, int age, int code) {
this.name = name;
this.age = age;
this.code = code;
}
public static void main(String[] args) {
Student student = new Student(" ",20,115);
Student student1 = new Student(" ",24,115);
Student student2 = new Student(" ",20,115);
List studentList = Arrays.asList(student, student1, student2);
//
Map> ageMap = studentList.stream().collect(Collectors.groupingBy(Student::getAge));
System.out.println("ageMap = " + ageMap);
// ,
Map ageMap2 = studentList.stream().collect(Collectors.groupingBy(Student::getAge, Collectors.counting()));
System.out.println("ageMap2 = " + ageMap2);
}
}
開発中のコード: public List areaList() {
List deviceConfigs = deviceConfigRepository.findAll();
Map> listMap = deviceConfigs.stream().collect(Collectors.groupingBy(DeviceConfig::getParkingLot));
List deviceConfigDTOS = Lists.newArrayList();
for (Map.Entry> entry : listMap.entrySet()) {
AreaDeviceConfigDTO areaDeviceConfigDTO = new AreaDeviceConfigDTO();
ParkingLot parkingLot = entry.getKey();
areaDeviceConfigDTO.setId(parkingLot.getId());
areaDeviceConfigDTO.setParkingLotName(parkingLot.getParkingLotName());
areaDeviceConfigDTO.setMain(parkingLot.isMain());
areaDeviceConfigDTO.setDeviceConfigs(entry.getValue());
deviceConfigDTOS.add(areaDeviceConfigDTO);
}
return deviceConfigDTOS;
}
ps:もっと多い情報はJDK 8の中のstreamの使い方を参考にしてください。