2 回答
TA貢獻1804條經驗 獲得超3個贊
鑒于 a 和 b 列表的大小相同,這應該可以解決問題,
List<Obj> objList = IntStream.range(0, a.size())
.mapToObj(i -> new Obj(a.get(i), b.get(i)))
.collect(Collectors.toList());
TA貢獻1844條經驗 獲得超8個贊
有幾種方法可以為列表和流實現 Zip-Operation(例如,請參閱這篇文章com.google.common.collect.Streams.zip),但您可以使用Guava Streams 中的現有方法。這樣,您的代碼可能如下所示:
final List<String> a = Arrays.asList("1", "2", "3");
final List<String> b = Arrays.asList("a", "b", "c");
List<Obj> objs = Streams.zip(a.stream(), b.stream(), (pa, pb) -> new Obj(pa, pb))
.collect(Collectors.toList());
您可以在之后進一步過濾流,例如:
List<Obj> objs = Streams.zip(a.stream(), b.stream(), (pa, pb) -> new Obj(pa, pb))
.filter(obj -> StringUtils.isNotEmpty(obj.b))
.collect(Collectors.toList());
添加回答
舉報
