我有:
- BoardField 类表示棋盘上的一 block 区域
- 一个类 Chessman,代表棋子,如 Pawn、Knight、Queen 等。
- 代表棋盘上所有棋子的列表。
Chessman 类有一个 BoardField 类型的字段
我想获得一份 职位 的列表,例如。棋盘上的所有白骑士。
这段代码会给我所有的白衣骑士:
chessmen.stream()
.filter(chessman -> chessman.getSide().equals(Side.White))
.filter(chessman -> chessman.getClass().equals(Knight.class))
.collect(Collectors.toList());
只获取白骑士位置的代码是什么?
以下内容
chessmen.stream()
.filter(chessman -> chessman.getSide().equals(Side.White))
.filter(chessman -> chessman.getClass().equals(Knight.class))
.collect(Collectors.toList())
.stream()
.forEach(chessman -> chessman.getField())
.collect(Collectors.toList());
不工作 - 行编译错误.collect(Collectors.toList());
最佳答案
假设有 Chessman::position
返回一个 BoardField
,它应该很简单
chessmen.stream()
.filter(chessman -> chessman.getSide().equals(Side.White))
.filter(chessman -> chessman.getClass().equals(Knight.class))
.map(Chessman::position)
.collect(Collectors.toList());
这是
的缩写形式chessmen.stream()
.filter(chessman -> chessman.getSide().equals(Side.White))
.filter(chessman -> chessman.getClass().equals(Knight.class))
.map(chessman -> chessman.position())
.collect(Collectors.toList());
关于java - [Java][功能] 将列表中的字段项收集到此类字段的列表中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49601143/