1、从集合中过滤出符合条件的元素(例子1)
//从集合List<>中获得符合条件的第一个元素
//例子中,ybService.getWaves() 返回 List<Yb_Wave>
Yb_Wave wave = ybService.getWaves().stream()
.filter(w -> name.equals(w.getName()))
.findAny()
.orElse(null);
- 1
- 2
- 3
- 4
- 5
- 6
2、从集合中过滤出符合条件的元素(例子2)
//lis.get(0).getChildren()本身是一个集合
List<MapLayer> lis = Utils.getMapLayers("public");
Arrays.stream(lis.get(0).getChildren())
.filter(w -> subject.equals(w.getTitle()))
.findAny()
.orElse(null)
- 1
- 2
- 3
- 4
- 5
- 6
3、从集合中过滤出符合条件的元素,然后修改
String imgPath = "/base/images/";
List<WorkBAquatic> lis = this.workBAquaticDao.queryAllByLimit(offset, limit);
lis.stream()
.filter(w -> w.getImg() != null)
.forEach(w -> {
w.setImg(imgPath + w.getImg());
});
return lis;
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
2021.05.18
如果是JSONArray,如何应用linq呢?类似例子:
JSONArray devices = ...
devices.stream()
.map(o -> (JSONObject) o)//多了一步对象转换?
.filter(jo -> jo.get("regionIndexCode").toString().compareTo(regionCode) == 0)
.forEach(jo -> {
CameraDevice device = new CameraDevice(jo.get("indexCode").toString(),
jo.get("name").toString(),
jo.get("regionIndexCode").toString(),
Integer.parseInt(jo.get("cameraType").toString()));
lis.add(device);
});
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
linq给编码带来了方便。