使用Java 8将一种类型的List转换为另一种类型的Array

raj*_*lli 0 java java-8 java-stream

我需要将字符串List转换为userdefinedType数组,对于数组我需要将字符串转换为long.

我已经使用以下方法实现了相同的目标

TeamsNumberIdentifier[] securityPolicyIdArray = securityPolicyIds.stream()
                .map(securityPolicy -> new TeamsNumberIdentifier(Long.valueOf(securityPolicy)))
                .collect(Collectors.toCollection(ArrayList::new))
                .toArray(new TeamsNumberIdentifier[securityPolicyIds.size()]);
Run Code Online (Sandbox Code Playgroud)

有没有更好的方法来转换它?

JB *_*zet 7

您不需要创建临时ArrayList.只需在流上使用toArray():

TeamsNumberIdentifier[] securityPolicyIdArray = securityPolicyIds.stream()
            .map(securityPolicy -> new TeamsNumberIdentifier(Long.valueOf(securityPolicy)))
            .toArray(TeamsNumberIdentifier[]::new);
Run Code Online (Sandbox Code Playgroud)

但总的来说,我倾向于首先避免使用数组,而是使用列表.