編輯 - 第二類不具有基於索引的訪問,而不是它實現迭代Java流上的所有值進行操作
假設一個階級結構是這樣的:
public class Values
{
public int getValue(int i)
{
return values_[i];
}
private int[] values_;
}
和第二類像這樣
public class ValuesCollection implements Iterable
{
private Values[] valuesCollection_;
}
是否有一種方法使用java8 streams API來操作每個維度的統計信息,例如:sum,mean,min ,max,range,variance,std等。例如[[2,4,8],[1,5,7],[3,9,6]],爲了得到min,它會返回[1,4, 6]
我可以想出最接近的是這樣的:
public int[] getMin(ValuesCollection valuesCollection)
{
IntStream.range(0, valuesCollection.size()).boxed().collect(Collectors.toList())
.forEach(i -> {
List<Integer> vals = valuesCollection.stream()
.map(values -> values.getValue(i))
.collect(Collectors.toList());
// operate statistics on vals
// no way to return the statistics
});
}
min 1,4,6?^^而不是2,1,3? – azro
您正在尋找'Stream.reduce'。或自定義收集器。 –
@azro是1,4,6我試圖穿過維度 – rossb83