如何使用另一个实例列表在java中有效地创建实例列表

时间:2017-12-26 18:31:41

标签: java list loops

我有一个实例列表,我需要使用第一个列表中的实例创建另一个实例列表。 如下所示,我可以使用foreach或for循环。有没有更好的方法来更有效地做到这一点?

List<Mesage> messages; 
List<ArchMessage> archMessages = new ArrayList<>();
for(Message message : messages) {
       archMessages.add(new ArchMessage(message));
}

4 个答案:

答案 0 :(得分:2)

您可以使用Java 8 Stream s:

List<ArchMessage> archMessages =
    messages.stream()
            .map(message -> new ArchMessage(message))
            .collect(Collectors.toList());

List<ArchMessage> archMessages =
    messages.stream()
            .map(ArchMessage::new)
            .collect(Collectors.toList());

答案 1 :(得分:0)

这是有效的,但是假设您的代码可以从并行性中受益,那么使用流API将是理想的,因为我们可以免费获得并行性 使用dotnet publish -c Release -r win10-x64 例如

parallelStream

除此之外,您当前的方法似乎很好并且可读。

答案 2 :(得分:0)

如果您无法使用Java 8中的流,Apache Commons Collections库提供以下内容:

http://commons.apache.org/proper/commons-collections/

Collection<ArchMessage> archMessages = CollectionUtils.collect(messages, new Transformer() {
    public Object transform(Object o) {
        return new ArchMessage((Mesage) o);
    }
});

答案 3 :(得分:0)

对您的recherche的反馈: 我建议不要使用foreach。它会在每个请求中引发内部请求的有效下降原因。我建议每次使用一次..