首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Java 8中设置对象列表中的类属性

如何在Java 8中设置对象列表中的类属性
EN

Stack Overflow用户
提问于 2015-09-23 21:59:15
回答 2查看 2.5K关注 0票数 4

我有一个PageSummary对象的ArrayList,我希望使用Java8将列表对象的值设置为我的模型类属性。

代码语言:javascript
复制
public class XXXX {
for(PageSummary ps : pageSummaryList){
model = new Model();
model.setName(ps.getName());
model.setContent(getContent(ps.getName()));
model.setRating(getAverageRating(ps.getName()));
modelList.add(model);
}                   

private String getContent(String sopName){} 

private AverageRatingModel getAverageRating(String sopName){}
}

这里getAverageRating函数返回1-5之间整数,getContent返回字符串。

EN

回答 2

Stack Overflow用户

发布于 2015-09-23 22:08:56

以下是一些提示:

  1. 根据列表创建PageSummary流,并将
  2. 映射从PageSummary映射到模型
  3. 收集模型对象

以下是一些教程:

https://docs.oracle.com/javase/tutorial/collections/streams/reduction.html

https://docs.oracle.com/javase/tutorial/collections/streams/index.html

票数 3
EN

Stack Overflow用户

发布于 2015-09-23 22:09:23

首先,您应该使用PageSummary参数创建一个Model构造函数。

代码语言:javascript
复制
public Model(PageSummary ps) {
    this.setSopName(ps.getName());
    this.setSopContent(getContent(ps.getName(), clientCode, context, httpcliet));
    this.setAverageRating(getAverageRating(ps.getName(), clientCode, context, httpclient));
}

多亏了这一点,你可以缩短循环:

代码语言:javascript
复制
for (PageSummary ps : pageSummaryList) {
    ModelList.add(new Model(ps));
}

并轻松使用Stream API:

代码语言:javascript
复制
// This solution is thread-safe only if ModelList is thread-safe
// Be careful when parallelizing  :)
pageSummaryList.stream().map(Model::new).forEach(ModelList::add);

代码语言:javascript
复制
// A thread-safe solution using Stream::collect()
List<Model> models = pageSummaryList.stream()
                                    .parallel() // optional :)
                                    .map(Model::new)
                                    .collect(Collectors.toList());
ModelList::addAll(models); // I suppose you don't need us to implements this one!

感谢Alexis C.指出,在并行化的情况下,使用collect方法可以避免并发问题:)

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32741695

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档