項目中運用到的Lambda表達式,簡化了Java8以前的寫法,包含了循環、判斷、求和、分組等。邊學邊做,記錄如下:
1、計算JSON字符串中value的sum值(map)
public static void main(String[] args) {
String test = "{\"0\":4,\"1\":1,\"2\":105,\"3\":135,\"4\":132,\"5\":6,\"6\":0}";
Map<Integer, Integer> map = JSON.parseObject(test, Map.class);
Integer sum = map.values()
.stream()
.reduce(Integer::sum)
.orElse(0);
System.out.println(sum);
}
2、在List<Dto>中過濾某個指定key的數據(filter)
Java8之前要先循環列表,然後再list.contains()
public class DeviceUserBaseLineDto{
private String device_id;
private String deviceUserDtoStr ;
}
public static void main(String[] args) {
String deviceId = "123";
List<DeviceUserBaseLineDto> collect = deviceUserBaseLineDtos
.stream()
.filter(a ->deviceId.equals(a.getDevice_id())).collect(Collectors.toList());
//此處a->後可以多條件
String deviceUserDtoStr = collect.get(0).getDeviceUserDtoStr();
}
3、提取List<Dto>中的某個屬性成集合
//從對象列表中提取一列(以name爲例)
List<String> nameList = userList.stream().map(UserInfo::getName).collect(Collectors.toList());
//提取後輸出name
nameList.forEach(s-> System.out.println(s));