列表<Long> 到列表<Integer>

List<Long> to List<Integer>

我有一个 SQL 查询,其中 return 是一个数组。

List<Integer> listInteger = new ArrayList<>();                                                                   
try (QueryCursor<List<?>> cursor = cache.query(sql_query)) {
    listInteger = (List<Integer>) cursor.getAll().get(0);
}

然后我尝试获取数组中的最大值元素。

int max =  Collections.max(listInteger).intValue();

但是这个 returns java.lang.ClassCastException: java.lang.Long cannot be cast to java.lang.Integer 错误。

然后我试了

int max = (int) Collections.max(ventriTrigeminiBeatList).longValue();

这也return同样的错误。

我的 SQL 查询是 Select sum( timestamp <= t1 and timestamp >= t2), sum( timestamp <= t3 and timestamp >= t4) from db ; 我正在查询 Ignite 缓存。查询运行良好,它 return 是一个数组(例如:[3, 3, 3])。我无法使用 sql MAX,因为我稍后也会使用此 listInteger

谁能告诉我如何解决这个问题。谢谢。

SQL SUM 函数 return 类型映射到 Long 对于 Java 中的整数类型列,因此您可能需要更改列表到 List<Long> 然后处理它。

参见示例https://docs.oracle.com/cd/E19226-01/820-7627/bnbvy/index.html

您可以获得 long 最大值,然后在需要时将其转换为 int...

long longMax =  Collections.max(listInteger).longValue();

Integer intMax = longMax == null ? null : Math.toIntExact(longMax); // This throws an exception if an overflow is present.