在 arrayListOfPersons.sort(Comparator.comparing(a -> a.getName())) 中,它如何知道“a”指的是 ArrayList 中的 Person 对象?

问题描述 投票:0回答:0

我正在根据 name 属性(它是一个字符串)将

ArrayList<Person>
排序为字母顺序。该代码按预期工作,我不明白的一部分是它如何知道
a
指的是什么。

如果我没理解错的话,sort方法接受一个Comparator作为参数。

Comparator.comparing()
返回一个比较器。这个 Comparator 基本上使 sort 方法能够对 Person 对象进行排序。

comparing()
方法接受一个函数作为参数。我给它一个匿名函数/lambda,它有
a
作为参数并执行
a.getName()
返回名称 String.

但是我很不明白的是它怎么知道这里的

a
是一个
Person
?甚至 IDE 都知道,因为它在我编写代码时建议来自 Person 的方法。
comparing()
怎么知道
a
是一个人。我查看了 Comparator、comparing() 和 ArrayList.sort() 的文档和源代码,但无法弄明白。

arrayListOfPersons.sort(Comparator.comparing(a -> a.getName()));
java sorting arraylist lambda comparator
© www.soinside.com 2019 - 2024. All rights reserved.