gpt4 book ai didi

java - 有没有更有效的方法来使用流从 ResultSet 中的 int 列获取平均值(Java)

转载 作者:行者123 更新时间:2023-12-01 07:44:09 25 4
gpt4 key购买 nike

我目前正在尝试使用流从 ResultSet 中的 int 列中获取平均值,但是我可以完成这项工作的唯一方法是首先将数字放入列表中并在该列表上使用 .stream() 。

有没有更直接的方法来实现这一点?

public void avgSalaryAbove150k(Connection con) {

String sqlQuery = "SELECT * FROM " + schemaName + "."+tableName+" WHERE EMPLOYEE_SALARY>150000";
List<Integer>salaries = new ArrayList<>();


try(
PreparedStatement preparedStatement = con.prepareStatement(sqlQuery);
ResultSet rs = preparedStatement.executeQuery();
){
while(rs.next()) {

int salary = rs.getInt("EMPLOYEE_SALARY");

salaries.add(salary);

}
System.out.println("Now showing average salary of employees with a salary of over 150,000...");
salaries.stream()
.mapToInt((x)->x)
.average()
.ifPresent(System.out::println);
System.out.println("");

}catch(SQLException ex) {

System.out.println("Failed to create the database connection.");
ex.printStackTrace();
}

}

该方法目前适用于此,但我有明显的感觉这不是最好的方法。

最佳答案

将平均计算移至 SQL 查询本身,这样您就根本不需要使用 Java Streams。

String sqlQuery = "SELECT avg(EMPLOYEE_SALARY) FROM " + schemaName + "."+tableName+" WHERE EMPLOYEE_SALARY>150000";

然后您可以读取 ResultSet 中返回的单行,并确保以 double 形式检索该值。

关于java - 有没有更有效的方法来使用流从 ResultSet 中的 int 列获取平均值(Java),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57501640/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com