我有一个实体Issue
如下:
public class Issue{
private IssueElementEnum issueElement;
private IssueTypeEnum issueType;
private String title;
}
我有一个{DA}的Issue
列表:
List<Issue> issues = issueDAO.findAll();
在此列表中,我有一些Issue
对象issue.getIssueElement() == IssueElementEnum.USER
,我想通过更改title
字段来更新这些对象,因为我必须过滤{{1}的列表从结果列表中创建一个String类型列表,然后我必须将此列表传递给一个服务,该服务将返回一个新标题列表,用于替换旧标题。
这就是我的尝试:
issues
有没有其他方法可以写这个?
答案 0 :(得分:1)
很难确切地了解这里发生的事情,但我发现有2项改进。
首先,userIssues
根本没有意义(尽管在最后一步中你迭代所有issues
而不是userIssues
似乎很奇怪。这是对的吗?)。只是做
List<String> oldTitles = issues
.stream()
.filter(a -> a.getIssueElement() == IssueElementEnum.USER)
.map(Issue::getTitle)
.collect(Collectors.toList());
其次,嵌套循环似乎不必要。我不是100%清楚你的逻辑,但这样的事情应该有用。
Map<String, User> usersByKey = new HashMap<>();
for (User user : users)
usersByKey.put(user.getKey(), user);
for (Issue issue : issues) {
User user = usersByKey.get(issue.getTitle());
if (user != null)
issue.setTitle(user.getFirstName() + " " + user.getLastName());
}