【发布时间】:2018-01-06 18:40:37
【问题描述】:
我有以下 ArrayList List<DataSt> list1 其中list1 具有以下值(浮点数):
<25.89, 21.23>
< 5.89, 1.23>
< 3.69, 20.23>
< 2.89, 121.23>
<125.89, 231.23>
.
.
.
< 28.89, 41.23>
而DataSt具有以下结构:
public class DataSt {
private float a;
private float b;
public DataSt(float a , float b){
this.a=a;
this.b=b;
}
}
现在我需要从第一列中找到最小值,即从<25.89, 5.89, 3.69, 2.89, 125.89 ... 28.89> 它必须返回 2.89
然后从<25.89, 5.89, 3.69, 2.89, 125.89 ... 28.89>找到最大值,它必须返回125.89
现在对第二列重复相同的操作,并用 4 个不同的变量分别存储它们,例如 min_col1、max_col1、min_col2 和 max_col2。
min_col1 = 2.89
max_col1 = 125.89
min_col2 = 1.23
max_col2 = 231.23
我一直在寻找各种解决方案,这些解决方案建议使用两个 for 循环确实很耗时,还有一些线程建议使用 stream() 来查找整个列表(即,不是每一列)。
有没有一种有效的方法来做到这一点?我也在关注 Apache Commons。
【问题讨论】:
-
到目前为止您尝试过什么?您在哪里遇到性能问题?
-
如果你能分享你已经拥有的代码会很好。它表明您自己做出了努力,而不仅仅是在寻找为您编写代码的人。还可以更轻松地查看您是否在代码中犯了任何错误和/或是否可以改进
-
请通过使用这些嵌套循环向我们展示您的努力。然后我们可以向您展示如何改进它。但是,如果您的代码完成了实际工作并且没有性能问题,为什么要更改有效的解决方案?
-
你确实没有有一个二维数组。您有一个 1D 对象数组,每个对象包含 2 个浮点数。