计算嵌套列表的平均值

时间:2019-12-23 06:06:51

标签: java list average

请告诉我一种计算此结构平均值的有效方法。

示例:

ObservedObject

期待:

struct SongListView: View {

    @ObservedObject var model: SongListViewModel

    @State var player: Player

    var body: some View {

        List(model.songs, id: \.id) { song in
            Button(action: {
                self.player.play(link: song.link)
            }) {
                TitleRowView(title: song)
            }
        }
        .onAppear {
            self.model.get()
        }
        .navigationBarTitle(Text("Songs"), displayMode: .inline)
    }
}

struct CategoryListView: View {
    var categoryData : [Category]
    @ObservedObject var player: Player
    let viewModel = SongListViewModel()

    var body: some View {
        List(categoryData, id: \.id) { category in

            if category.id == 3 {
                NavigationLink(destination: SongListView(player: self.player).environmentObject(self.viewModel)) {
                    TitleRowView(title: category)
                }
            }

        }
    }
}

现在,我创建了一种计算平均值的方法:

List<Double> one = Arrays.asList(-17.3, -1.3, 22.3);
List<Double> two = Arrays.asList(-2.3, 12.2, -75.3);
List<Double> three = Arrays.asList(-0.3, 72.0, -22.1);

List<List<Double>> montSensorMetrics = new ArrayList<>();
montSensorMetrics.add(one);
montSensorMetrics.add(two);
montSensorMetrics.add(three);

您能告诉我,这是正确的决定吗?

1 个答案:

答案 0 :(得分:1)

我已经使用Java 8流获取每个列表的平均值。

List<Double> one = Arrays.asList(-17.3, -1.3, 22.3);
List<Double> two = Arrays.asList(-2.3, 12.2, -75.3);
List<Double> three = Arrays.asList(-0.3, 72.0, -22.1);

List<List<Double>> montSensorMetrics = new ArrayList<>();
montSensorMetrics.add(one);
montSensorMetrics.add(two);
montSensorMetrics.add(three);

List<Double> averageValues = IntStream.range(0,montSensorMetrics.size()).mapToDouble(pos -> montSensorMetrics.stream().mapToDouble(outer -> outer.get(pos)).sum()).map(a -> a/montSensorMetrics.size()).boxed().collect(Collectors.toList());
System.out.println(averageValues);