【发布时间】:2019-04-29 19:38:19
【问题描述】:
我有课
class Person {
public List<BaseballPlayer> baseballPlayers;
public List<MmaFighter> mmaFighters;
public List<RugbyPlayer> rugbyPlayers;
}
在每个对象播放器中,他的 id 都有 String 属性。我正在尝试收集我所做的列表中的所有 id
List<String> baseballPlayersIds = person.baseballPlayers.stream()
.map(s -> s.getId()).collect(Collectors.toList());
List<String> mmaFightersIds = person.mmaFighters.stream()
.map(s -> s.getId()).collect(Collectors.toList());
List<String> rugbyPlayersIds = person.rugbyPlayers.stream()
.map(s -> s.getId()).collect(Collectors.toList());
baseballPlayersIds.addAll(mmaFightersIds);
baseballPlayersIds.addAll(rugbyPlayersIds);
现在我正在尝试通过使用 Stream.concat() 来简化事情并改进逻辑
Stream<List<BaseballPlayer>> baseballPlayersIdsStream = Stream.of(person.baseballPlayers);
Stream<List<MmaFighter>> mmaFightersIdsStream = Stream.of(person.mmaFighters);
Stream<List<RugbyPlayer>> rugbyPlayersIdsStream = Stream.of(person.rugbyPlayers);
Stream<List<? extends Object>> personStream = Stream.concat(baseballPlayersIdsStream, Stream.concat(mmaFightersIdsStream, rugbyPlayersIdsStream));
但我不知道我应该对来自 3 个流的新流类型使用泛型吗?还尝试为所有 3 个类创建父类以在流 diamand 而不是 Object 中使用。此 personStream 存在疑问。
【问题讨论】:
-
是否
BaseballPlayer、MmaFighter和RugbyPlayer都实现了定义抽象getId()方法的通用接口? -
@JacobG。他们没有
-
是否允许修改这些类以实现通用接口?
-
如果这是一个解决方案并且没有其他方法可以修改类,但如果有其他方法我会尝试它
标签: java spring collections java-stream