微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

迭代 List 并显示每个对象的一个​​字段的值的最有效方法是什么?

如何解决迭代 List 并显示每个对象的一个​​字段的值的最有效方法是什么?

列表中有很多 OrderDTO 对象。

包含 2 个项目的示例:

final List<OrderDTO> orderList = new ArrayList<OrderDTO>();

final List<OrderDTO> orderList = new ArrayList<OrderDTO>();
final OrderDTO order1 = new OrderDTO("1","100");
final OrderDTO order2 = new OrderDTO("2","200");
orderList.add(order1);
orderList.add(order2);

OrderDTO 具有字段,例如 orderIdstateId

我想在日志中显示

"1","2" 

"100","200"

在 Java 11 中,迭代列表并显示每个对象的一个​​字段的值的最有效方法是什么?

解决方法

虽然迭代集合的一种方式可能比其他方式更高效,但在您的用例中它根本无关紧要。花费最多时间的部分是打印元素,而不是迭代集合的方式。通常打印一些输出比仅仅迭代一个集合花费数千倍的时间。如果您只是迭代超过 1000 万个元素,则可能需要 100 毫秒。如果您在该循环内添加 System.out.println,则可能需要几分钟才能执行。

简而言之,不值得考虑在您的用例中进行优化。

另外,关于“过早优化”的内容可能值得一读 - 除非您确实看到了一些性能问题,否则不要优化某些内容。

,

由于一开始我也很困惑,当我开始处理日志时,网络带来了截然不同的结果如何去做,我很难找到一个简单的helloworld示例,下面的简单示例可能会帮助其他人:

import java.util.List;
import java.util.stream.Collectors;
import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.Setter;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

public class Example {
    private static final Logger LOG = LoggerFactory.getLogger(Example.class);
    public static void main(String[] args) {
        final List<OrderDTO> orderList = List.of(new OrderDTO("1","100"),new OrderDTO("2","200"));
        LOG.info("ids: {}",orderList.stream().map(OrderDTO::getOrderId).collect(Collectors.toList()));
        LOG.info("states: {}",orderList.stream().map(OrderDTO::getStateId).collect(Collectors.toList()));
    }

    @Getter
    @Setter
    @AllArgsConstructor
    private static class OrderDTO {
        String orderId;
        String stateId;
        public OrderDTO() {
        }
    }
}

输出

[main] INFO newpackage.Example - ids: [1,2]
[main] INFO newpackage.Example - states: [100,200]

假设您已将此依赖项添加到您的 pom:

<dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>slf4j-api</artifactId>
    <version>1.7.26</version>
</dependency>
<dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>slf4j-simple</artifactId>
    <version>1.7.28</version>
</dependency>
<dependency>
    <groupId>org.projectlombok</groupId>
    <artifactId>lombok</artifactId>
    <version>1.18.12</version>
    <type>jar</type>
</dependency>

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。