请告诉我一种计算此结构平均值的有效方法。
示例:
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);
您能告诉我,这是正确的决定吗?
答案 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);