使用java流将两个相同大小(和不同类型)的列表组合到域对象列表中
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用java流将两个相同大小(和不同类型)的列表组合到域对象列表中相关的知识,希望对你有一定的参考价值。
我有两个相同大小的ids
和results
列表,我想用域对象创建新列表。
List<Id> ids = ...
List<Result> results = redisTemplate.opsForValue().multiGet.get(ids);
List<DomainObject> list = // list of domain objects new DomainObject(id, result);
我用过的解决方案:
List<DomainObject> list = new ArrayList<>(ids.size());
for (int i = 0; i < ids.size(); i++) {
list.add(new DomainObject(ids.get(i), results.get(i)));
}
有没有更优雅的方式来做到这一点,例如。使用溪流?
答案
与Streams
相同的方式是:
List<DomainObject> list = IntStream.range(0, ids.size())
.mapToObj(i -> new DomainObject(ids.get(i), results.get(i)))
.collect(Collectors.toList());
或者看看Iterate two Java-8-Streams
另一答案
我找到了一种方法,使用番石榴zip
操作员。
List<DomainObject> list = Streams.zip(ids.stream(), results.stream(), DomainObject::new)
.collect(Collectors.toList());
以上是关于使用java流将两个相同大小(和不同类型)的列表组合到域对象列表中的主要内容,如果未能解决你的问题,请参考以下文章