替换Java8中映射列表列表中的值
我有一张包含所有这些值的地图: 地图:替换Java8中映射列表列表中的值,java,list,java-8,hashmap,java-stream,Java,List,Java 8,Hashmap,Java Stream,我有一张包含所有这些值的地图: 地图: B Bonus C Cash D Draft 我有一份清单: 账户: Number, Type, Name 会计清单 Account 0 : 123, B, Sam Account 1 : 124, C, Harry 我必须根据Map中的键值对更新AccountList中的值 我有以下代码: for (Account acc: AccountList) { acc.setAccountType(map.get(acc.getAcco
B Bonus
C Cash
D Draft
我有一份清单:
账户
:
Number, Type, Name
会计清单
Account 0 : 123, B, Sam
Account 1 : 124, C, Harry
我必须根据Map中的键值对更新AccountList中的值
我有以下代码:
for (Account acc: AccountList) {
acc.setAccountType(map.get(acc.getAccountType()));
}
如何使用Java8流编写上述代码您可以尝试使用
forEach
:
AccountList.stream().forEach(acc -> acc.setAccountType(map.get(acc.getAccountType())))
您可以通过parallelStream执行此操作:
AccountList =
AccountList.
parallelStream().
peek(
acc -> acc.setAccountType(
map.get(acc.getAccountType())
)
).collect(
Collectors.toList()
);
如果要返回新列表而不修改现有列表
List<AccountList> updatedAccountList = accountLists.stream().map(a -> {
AccountList newAccountList = new AccountList();
newAccountList.setType(map.get(a.getType()));
return newAccountList;
}).collect(Collectors.toList());
List updateAccountList=accountList.stream().map(a->{
AccountList newAccountList=新AccountList();
setType(map.get(a.getType());
返回newAccountList;
}).collect(Collectors.toList());
我建议避免这种情况。Java的parallelStream使用公共的ForkJoin线程池,您对此没有任何控制权。该池在所有并行流调用、CompletableFutures(如果没有提供自定义线程池)之间共享。此外,使用并行处理增加了额外的开销和复杂性,以及与Java并发模型相关的所有其他问题。长话短说-如果您不确定自己是否能从并行处理中获益,请不要这样做。将创建一个新列表,但此列表中的值将被修改。