如何使用Collectors.groupingBy()来简化这个表达式?

huangapple go评论64阅读模式
英文:

How can I simplify this expression using Collectors.groupingby()?

问题

如何使用Collectors.groupingBy()来简化这个表达式?这将是最佳解决方案吗?还是有更好的方法?

public Map<String, List<Account>> findAllAccounts(final List<String> listOfIds) {
    Map<String, List<Account>> result = listOfIds.stream()
            .collect(Collectors.groupingBy(id -> id, Collectors.mapping(this::getAccount, Collectors.toList())));
    return result;
}
英文:

How can I simplify this expression using Collectors.groupingby()? Will it be the best solution or are there any better?

 public Map&lt;String, List&lt;Account&gt;&gt; findAllAccounts(final List&lt;String&gt; listOfIds) {
        Map&lt;String, List&lt;Account&gt;&gt; result = new HashMap&lt;&gt;();
        listOfIds.forEach(id -&gt;
                result.put(id , getAccount(id)));
        return result;
    }

答案1

得分: 2

轻而易举,就像日本人一样!

public Map<String, List<Account>> findAllAccounts(List<String> listOfIds) {
    return listOfIds.stream()
                    .map(this::getAccount)
                    .collect(Collectors.groupingBy(Account::getId, Collectors.toList()));
}

附注: 假设 getAccount(String id) 是一个轻量级方法,而不是访问数据库的方法,例如。

英文:

easy-peasy, japanesey!

public Map&lt;String, List&lt;Account&gt;&gt; findAllAccounts(List&lt;String&gt; listOfIds) {
    return listOfIds.stream()
                    .map(this::getAccount)
                    .collect(Collectors.groupingBy(Account::getId, Collectors.toList()));
}

P.S. assuming that getAccount(String id) is light method and not go to DB e.g.

答案2

得分: 1

你可以在你的情况下使用 Collectors.toMap。根据你的代码,我猜 getAccount() 会返回 List<Account>

listOfIds.stream().collect(Collectors.toMap(id -> id, id -> getAccount(id)));
英文:

You can use Collectors.toMap for your case. And with your code, I am guessing getAccount() will return List&lt;Account&gt;

listOfIds.stream().collect(Collectors.toMap(id -&gt; id, id -&gt; getAccount(id)));

huangapple
  • 本文由 发表于 2020年10月23日 17:29:25
  • 转载请务必保留本文链接:https://go.coder-hub.com/64497462.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定