java - 关于如何改进我的实现有什么建议吗?

标签 java spring java-stream

这是我下面代码的一部分。当我使用 for 循环(注释掉)时 - 它有效。当我使用这个流时 - 它有点工作,但随后在我从未期望过的方法上表现得很糟糕。

        Spravochnik spr = new Spravochnik();
        ResultSetMetaData rsmeta = rs.getMetaData();
        List<String> columnNames = new ArrayList<>();
        List<List<String>> valuesInRows = new ArrayList<List<String>>();
        int columnCount = rsmeta.getColumnCount();

        IntStream.range(0, rsmeta.getColumnCount()).forEach(i -> {
            try {
                columnNames.add(rsmeta.getColumnName(i));
            } catch (SQLException e) {
                e.printStackTrace();
            }
        });

//      for(int column = 1; column <= columnCount; column++){
//          columnNames.add(rsmeta.getColumnName(column));
//      }

我猜我的实现是错误的。有什么建议如何改进这里吗?谢谢!

最佳答案

您必须小心循环或流式传输中包含哪些数字以及不包含哪些数字。

请注意,第一个数字始终包含在内,因为您从 1 循环,您想要启动Stream来自1还有:

IntStream.range(1, rsmeta.getColumnCount()).forEach(i -> {
    // ...
});

最后,Stream的好处这里的用法是相当有问题的。事实上,根本没有任何好处。我强烈建议坚持使用 for-loop在此用例中:

for (int column = 1; column <= columnCount; column++) {
    columnNames.add(rsmeta.getColumnName(column));
}

关于java - 关于如何改进我的实现有什么建议吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55864975/

相关文章:

java - 将rabbitMQ消息日志分离到不同的日志文件中

java - 从数据库中删除 token 的最佳方法

java - 在 Java Stream.of() 与 IntStream 与 A​​rrays.stream() 生成的 Stream 上调用 map(Arrays::toString)

java - 是否有 BiConsumer 的反向映射到元组等多个值

java - 从一组集合中添加所有项目的最佳方法

java - 将 JInternalFrame 在 JDesktopPane 中居中无法正常工作

java - 将特定行写入文件

java - Spring Boot - 可以拦截@Async 服务方法吗?

java - 父类构造函数

java - 在主机上运行我的 Intellij IDE,我需要 ZeroMQ 以便与 guest 上的后端应用程序通信