Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
替换Java8中映射列表列表中的值_Java_List_Java 8_Hashmap_Java Stream - Fatal编程技术网

替换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并发模型相关的所有其他问题。长话短说-如果您不确定自己是否能从并行处理中获益,请不要这样做。将创建一个新列表,但此列表中的值将被修改。