List<double[]> rangeList = Arrays.asList(new double[]{46273492.111100, 97812491.333300}, new double[]{97812491.333301, 154230351.5560000}, new double[]{154230351.556001, 209694831, 111000}, new double[]{209694831.111001, 265248971.048000}, new double[]{265248971.048001, 327116841.778000}, new double[]{327116841.778001, 408028156.444000}, new double[]{408028156.444001, 512343435.730000}, new double[]{512343435.730001, 637647043.556000}, new double[]{637647043.556001, 154230351.556000}, new double[]{800450248.889001, 1084511415.110000}); List<VitalityMiddlePotentialSpace> vitalityMiddlePotentialSpaceList = this .baseMapper.getVitalityMiddlePotentialSpaceOrderByMeanAsc();如何将这个集合按上面的区间分组
时间: 2024-01-21 08:04:53 浏览: 55
浅谈Arrays.asList()方法的使用
您可以使用Java 8的Stream API进行操作,具体代码如下:
```
Map<String, List<VitalityMiddlePotentialSpace>> groupMap = vitalityMiddlePotentialSpaceList.stream()
.collect(Collectors.groupingBy(m -> {
for (int i = 0; i < rangeList.size(); i++) {
double[] range = rangeList.get(i);
if (m.getMean() >= range[0] && m.getMean() < range[1]) {
return String.valueOf(i);
}
}
return "";
}));
```
这段代码中,我们使用Java 8的Stream API的`collect`方法将集合按照区间分组,`groupingBy`方法的参数是一个函数,这个函数返回值是一个字符串,用来表示当前元素属于哪个区间。具体实现中,我们遍历每个区间,判断当前元素的平均值是否在该区间内,如果在,则返回区间的下标作为分组的键值,否则返回空字符串。最终得到一个`Map`对象,其中键是区间的下标,值是属于该区间的元素列表。
阅读全文