如何使用Java Stream API查找中间值

时间:2018-09-26 23:10:12

标签: java java-8 java-stream

如何使用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;
    }

如果我将大型数组更改为并行流,您会怎么想呢?排序会并行吗?

1 个答案:

答案 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);