Stream.max()
接受比较器
类型的参数,其中包含比较()
方法;比较方法接受两个参数,并返回一个int
。所以我们可以使用一个方法将整数#比较()
引用为max()
方法的参数;但是Integer.compareTo()
只接受一个参数,与比较()
方法的参数数量不匹配,那么为什么它也可以用作max()
的参数呢?
那是我的代码:
Integer maxMenuTp = menuTpList.stream().max(Integer::compareTo);
< code>Integer::compareTo即< code>Integer中的< code > public int compare to(Integer b)是一个实例方法,因此它通过接受一个参数作为< code>this和第二个参数作为方法参数来适应< code >比较器函数接口。
因此(a,b)-
这似乎很奇怪,这并不像我预期的那样有效。我编写了一个简单的java类,它实现了可比接口并重写了compareTo()方法。但是,它不允许我传递Object以外的特定类型的参数。我在网上查看了其他人的代码,他们确实使用了其他类型的对象,我将他们的代码复制到eclipse中,但我仍然得到了同样的错误。 我的问题是;我必须做什么来比较这个对象和类型的对象,让我们说Person。比较器接口(compare
问题内容: 我已经max对Java 8 lambda和流上的功能进行了一些测试,并且似乎在max执行情况下,即使有多个对象与0比较,它也会在绑定的候选对象中返回任意元素,而无需进一步考虑。 对于这样的最大预期行为,是否有明显的技巧或功能,以便返回所有最大值?我在API中看不到任何内容,但是我确信它必须比手动比较更好。 例如: 问题答案: 我将按值分组并将值存储到TreeMap中,以便对值进行排序,
问题内容: 因此,我有一组对象,这些对象的阶跃变量可以为1-4。 然后,我想从具有最大步进值的集合中获取一个实例,因此我这样做: 但是,在某些情况下,集合中将存在多个实例,这些实例的步骤等于4。 因此,我的问题是,如何确定在中返回哪个实例,或者当流中的多个对象具有要比较的最大值时,它是否引发异常? 该函数的Java 8文档未指定在这种情况下会发生什么。 问题答案: 被实现以减少收集: 在这里您可以
问题内容: 因此,几天前我开始学习Java并遇到了一个问题。对于下一个表达式: 不被允许。但是,在中,我们可以使用类似: 由于不允许将整数隐式地分配给字符串,因此上述表达式为何起作用?任何人都可以给出详细的解释吗?我也想知道我们什么时候可以使用这种隐式事物,什么时候不能使用。 问题答案: PrintStream 有很多重载方法:
代码如下: 返回值是列表中的最小值-15。但是当我将max()更改为min()时,它会返回max值。为什么?