使用Java8将一种类型的列表转换为另一种类型的数组
我需要将字符串列表转换为userdefinedType数组,对于数组,我需要将字符串转换为long 我用下面的方法实现了同样的效果使用Java8将一种类型的列表转换为另一种类型的数组,java,java-8,java-stream,Java,Java 8,Java Stream,我需要将字符串列表转换为userdefinedType数组,对于数组,我需要将字符串转换为long 我用下面的方法实现了同样的效果 TeamsNumberIdentifier[] securityPolicyIdArray = securityPolicyIds.stream() .map(securityPolicy -> new TeamsNumberIdentifier(Long.valueOf(securityPolicy)))
TeamsNumberIdentifier[] securityPolicyIdArray = securityPolicyIds.stream()
.map(securityPolicy -> new TeamsNumberIdentifier(Long.valueOf(securityPolicy)))
.collect(Collectors.toCollection(ArrayList::new))
.toArray(new TeamsNumberIdentifier[securityPolicyIds.size()]);
有没有更好的转换方法?您不需要创建临时ArrayList。只需在流中使用toArray:
TeamsNumberIdentifier[] securityPolicyIdArray = securityPolicyIds.stream()
.map(securityPolicy -> new TeamsNumberIdentifier(Long.valueOf(securityPolicy)))
.toArray(TeamsNumberIdentifier[]::new);
但一般来说,我会首先避免使用数组,而是使用列表。我会这样写:
securityPolicyIds.stream()
.map(Long::valueOf)
.map(TeamsNumberIdentifier::new)
.toArray(TeamsNumberIdentifier[]::new);
这是更有效的一个和更干净的,我将使用sameI也做同样的事情,但我的API需要数组而不是列表