📅  最后修改于: 2023-12-03 14:42:52.914000             🧑  作者: Mango
ToIntBiFunction
接口是 Java 8 新增的一个函数式接口,它定义了一个具有两个参数并返回一个 int
类型结果的函数。该接口通常用于对两个对象进行操作并返回一个 int
类型的结果。
ToIntBiFunction
接口继承自 BiFunction
接口,因此该接口中包含一个 applyAsInt()
方法,用于接收两个类型不同的参数,并返回一个 int
类型的结果。
int applyAsInt(T t, U u)
接收两个不同类型的参数,并返回一个 int
类型的结果。
假设我们有一个 Person
类,该类包含两个字段:age
和 salary
,现在我们想要按照年龄和薪水的大小来对人员列表进行排序。我们可以使用 ToIntBiFunction
接口编写一个自定义的比较器来实现这一点。
import java.util.*;
class Person {
int age;
int salary;
public Person(int age, int salary) {
this.age = age;
this.salary = salary;
}
public int getAge() {
return age;
}
public int getSalary() {
return salary;
}
}
public class Demo {
public static void main(String[] args) {
List<Person> persons = Arrays.asList(
new Person(25, 2000),
new Person(30, 3000),
new Person(20, 1500)
);
// 按照年龄和薪水的大小进行排序
persons.sort((o1, o2) -> sortByAgeAndSalary(o1, o2));
System.out.println(persons);
}
// 使用 ToIntBiFunction 接口编写的自定义比较器
public static int sortByAgeAndSalary(Person p1, Person p2) {
ToIntBiFunction<Person, Person> biFunction = (person1, person2) -> {
if (person1.getAge() == person2.getAge()) {
return person1.getSalary() - person2.getSalary();
} else {
return person1.getAge() - person2.getAge();
}
};
return biFunction.applyAsInt(p1, p2);
}
}
上述代码中,我们先创建了一个 Person
类,并初始化了几个实例。然后我们使用 sort()
方法进行排序,其中传入了一个自定义的比较器 sortByAgeAndSalary()
。该方法使用 ToIntBiFunction
接口编写了一个自定义的比较器,对两个人员对象按照年龄和薪水进行排序。
ToIntBiFunction
接口提供了一个方便的方式来对两个对象进行操作并返回一个 int
类型的结果。该接口通常用于需要对两个对象进行比较的场景,例如,我们需要按照多个字段对对象进行排序等。