如何使用Java流API查找中间值:
例如,我有以下数组int []arr ={0,1,2,4,6,5,3};
有没有一种方法以及使用java Stream API查找中间值的最佳方法是什么?
int findMedian() {
int []arr ={0,1,2,4,6,5,3};
IntStream.of(arr).sorted() // what I have to do here
return 0;
}
如果我将大型数组更改为并行流,您会怎么想呢?排序会并行吗?
答案 0 :(得分:1)
我建议您将数组传递给findMedian
(并且由于它不访问任何字段,因此将其设为静态)。然后您可以对其进行排序,将其转换回数组,然后以一半的长度返回元素。喜欢,
static int findMedian(int[] arr) {
return IntStream.of(arr).sorted().toArray()[arr.length / 2]);
}
或,skip
个元素那么多,limit
到第一个结果。喜欢,
return IntStream.of(arr).sorted().skip(arr.length / 2).limit(1);