簡體   English   中英

使用Java流將兩個大小相同(類型不同)的列表合並到域對象列表中

[英]Combine two lists of same size (and different type) into list of domain objects using java streams

我有兩個具有相同大小idsresults列表,我想用域對象創建新列表。

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());

或看看迭代兩個Java-8-Streams

我找到了一種使用番石榴zip運算符的方法。

List<DomainObject> list = Streams.zip(ids.stream(), results.stream(), DomainObject::new)
                            .collect(Collectors.toList());

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM