有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java在列表中查找原语位置

给定以下代码:

     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”,将其转换为浮点数并添加到列表中,我可以清楚地找到最高和最低金额

  1. 如何获得浮动价格的中点值
  2. 我如何才能在列表中找到它的位置,例如[4],如果它是10个浮点值的中间范围

共 (1) 个答案

  1. # 1 楼答案

    您可以通过排序的列表快速找到这些信息。下面是一个简单的例子

        public static void main(String[] args) {
             List<Float> floats = new ArrayList<>();
             floats.add(7.85f);
             floats.add(0.85f);
             floats.add(9.01f);
             floats.add(2.78f);
             Collections.sort(floats); // in ascending order, adjust sorting method as preferred - maybe you can utilize stream().sorted
    
             float min = floats.get(0);
             float max = floats.get(floats.size() - 1);
             int midIndex = floats.size() / 2; // Answer to #2
             float midValue = floats.get(midIndex); // Answer to #1
    
             System.out.println("Min: " + min + "\nMax: " + max + "\nMid index: " + midIndex + "\nMid value: " + midValue);
        }
    

    这将产生以下输出:

    Min: 0.85
    Max: 9.01
    Mid index: 2
    Mid value: 7.85