【发布时间】:2018-03-16 15:31:24
【问题描述】:
给定以下代码:
for (int i = 0; i < noRooms; i++) {
String roomPrice = response.xmlPath().getString("ABC_AvailRS.AccommodationSearchResponse.Accommodations.AccommodationSegment[0].AccommodationUnits.AccommodationUnit[" + i + "].RoomRate.@Amount");
roomPrices.add(roomPrice);
List<Float> floatRoomPrices = roomPrices.stream()
.map(Float::parseFloat)
.collect(Collectors.toList());
float min = floatRoomPrices.stream().min(Float::compare).get();
float max = floatRoomPrices.stream().max(Float::compare).get();
}
...在其中我可以获取一个金额列表作为字符串 Amount="92.65",将它们转换为浮点数并添加到一个列表中,我可以清楚地找到最高和最低金额。
- 如何获得 floatRoomPrices 的中间值?
- 如何在列表中找到它的位置,例如[4] 如果是 10 个浮点值的中间值?
【问题讨论】:
-
对列表进行排序。然后你就知道你的最小值、最大值和中间值在哪里了。
-
通常数组或长度为 n 的列表的中点位于
n/2。所以只需像floatRoomPrices.sort(Float::compare)一样对你的浮动进行排序;然后midPoint = floatRoomPrices.get(floatRoomPrices.size()/2); -
@arthur - 谢谢
-
为什么在每次循环迭代中都重复该操作?
标签: java arrays list java-8 java-stream