我有一个记录列表,其中每个记录都有两个主键primary id和alternate id。我想制作一个Map,通过它我可以使用primary id或使用rxjava操作的alternate id访问处理过的记录。
目前的执行情况:
ImmutableMap.Builder<String, Record> mapBuilder = new ImmutableMap.Builder<>();
fetchRecords()
.forEach(
record -> {
parsedRecord = dosomething(record);
mapBuilder.put(parsedRecord.getPrimaryId(), parsedRecord);
mapBuilder.put(parsedRecord.getAlternativeId(), parsedRecord);
});
return mapBuilder.build();
我希望它看起来像什么:
fetchRecords().stream()
.map(doSomething)
.collect(Collectors.toMap(RecordData::getPrimaryId, Function.identity()));
// Need to add this as well
.collect(Collectors.toMap(RecordData::getAlterantiveId, Function.identity()));
我只是想知道是否有一种方法可以在一次通过fetchrecords()的过程中将次要id添加到记录Map中。
1条答案
按热度按时间v8wbuo2f1#
我不熟悉RXJava,但这可能提供了一个起点。创建自定义收集器以添加两个键。这是一个非常基本的收集器,除了使用提供的最后一个外,不会处理重复的密钥。我只是用了新的
record
Java15中引入的创建不可变"class"
. 这对普通班来说也是一样的。打印以下内容: