为什么 Java8 Stream.min() 和 max() 将比较器作为输入?

Man*_*DIP 3 java java-8 java-stream

min() 函数应该计算集合中的最小元素并将数据返回给我们,这不是很明显吗?

我可以接受用户定义的对象(如 Person、Animal 等)的事实……我们必须提供比较器来计算最小元素。但是对于像 Integer、String、Double 这样普遍接受的类型,它为什么要尝试接受比较器实现。

它可能被重载的功能喜欢吗?

1.

min() => Just for types like Integer, String, Double etc..
Run Code Online (Sandbox Code Playgroud)

2.

min(Comparator c) => for types like user defined objects like Person etc...
Run Code Online (Sandbox Code Playgroud)

例如。,

List<Integer> list = new ArrayList<>();
Run Code Online (Sandbox Code Playgroud)

list.stream().min(/我仍然可以传递一个比较器来计算最大整数数据并违反函数的基本意图,对吗? /)

Era*_*ran 8

只有这样,min()没有一个可以工作Comparator了,如果元素类型TStream<T>被绑定来实现Comparable<T>

但是,Stream接口应该支持实现的Comparable元素类型和不实现的元素类型。因此,您必须传递一个Comparator<T>to min()