java comparator相等_Java Comparator thenComparingDouble()用法及代码示例

Java中Comparator接口的thenComparingDouble(java.util.function.ToDoubleFunction)方法将返回字典顺序比较器,并带有提取双精度排序键的函数。如果要对比较方法中相等的那些值应用另一个比较,则在比较方法之后应用此方法。

用法:

default Comparator thenComparingDouble(

ToDoubleFunction keyExtractor)

参数:此方法接受keyExtractor,该函数用于提取Double排序键。

返回值:此方法返回一个字典顺序比较器,由该字典比较器和Double排序键组成。

异常:如果参数为null,则此方法将引发NullPointerException。

以下示例程序旨在说明thenComparingDouble(java.util.function.ToDoubleFunction)方法:

示例1:

// Java program to demonstrate Comparator

// thenComparingDouble(ToDoubleFunction) method

import java.util.Arrays;

import java.util.Collections;

import java.util.Comparator;

import java.util.List;

public class GFG {

public static void main(String[] args)

{

List list = getStudentList();

Comparator comparator

= Comparator

.comparing(Student::getSchool)

.thenComparingDouble(Student::getpercentageMarks);

Collections.sort(list, comparator);

System.out.println("After sort");

list.forEach(s -> System.out.println(s));

}

public static List getStudentList()

{

Student s1 = new Student("Ram", 85.5, "SJV");

Student s2 = new Student("Shyam", 83.25, "MSH");

Student s3 = new Student("Mohan", 86.55, "SJV");

Student s4 = new Student("Sohan", 81.00, "MSH");

Student s5 = new Student("Rabi", 55.6, "SJV");

List list = Arrays.asList(s1, s2, s3, s4, s5);

return list;

}

}

class Student {

private String name;

private double percentageMarks;

private String school;

public Student(String name,

double percentageMarks,

String school)

{

this.name = name;

this.percentageMarks = percentageMarks;

this.school = school;

}

public String getName()

{

return name;

}

public void setName(String name)

{

this.name = name;

}

public double getpercentageMarks()

{

return percentageMarks;

}

public void setpercentageMarks(int percentageMarks)

{

this.percentageMarks = percentageMarks;

}

public String getSchool()

{

return school;

}

public void setSchool(String school)

{

this.school = school;

}

@Override

public String toString()

{

return "Student [name=" + name + ",

percentageMarks

= " + percentageMarks

+ ", school=" + school + "]";

}

}

IDE的控制台上打印的输出如下所示。

输出:

958065a9f5af712fd5836d3bc892f678.png

您可以在示例中看到,首先对学校进行排序,如果学校相同,则对百分比进行明智排序。

示例2:

// Java program to demonstrate Comparator

// thenComparingDouble(ToDoubleFunction)  method

import java.util.Arrays;

import java.util.Comparator;

import java.util.List;

public class GFG {

public static void main(String... args)

{

List list

= Arrays.asList(1, 2, 3, 4, 5, 6);

try {

// apply thenComparingDouble

Comparator.comparing(list::get)

.thenComparingDouble(null);

}

catch (Exception e) {

System.out.printf("Exception:" + e);

}

}

}

控制台上打印的输出如下所示。

输出:

51d9c32f43233c8c743cc7abf5e54b15.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java Comparator 接口有一个 reversed() 方法,它返回与当前比较器相反的比较器。这意味着,如果当前比较器认为 a 小于 b,则返回的比较器将认为 a 大于 b。 以下是一个使用 Java Comparator reversed() 方法的示例代码: ```java import java.util.*; public class Example { public static void main(String[] args) { List<Integer> numbers = Arrays.asList(3, 1, 4, 1, 5, 9, 2, 6, 5, 3); // 使用 Comparator.naturalOrder() 方法创建一个自然排序的比较Comparator<Integer> naturalOrder = Comparator.naturalOrder(); // 使用 reversed() 方法创建一个与自然排序相反的比较Comparator<Integer> reverseOrder = naturalOrder.reversed(); // 使用两个不同的比较器对列表进行排序 Collections.sort(numbers, naturalOrder); System.out.println(numbers); Collections.sort(numbers, reverseOrder); System.out.println(numbers); } } ``` 输出结果为: ``` [1, 1, 2, 3, 3, 4, 5, 5, 6, 9] [9, 6, 5, 5, 4, 3, 3, 2, 1, 1] ``` 在这个示例中,我们首先创建了一个包含整数的列表。然后,我们使用 `Comparator.naturalOrder()` 方法创建一个自然排序的比较器。接下来,我们使用 `reversed()` 方法创建一个与自然排序相反的比较器。最后,我们使用这两个不同的比较器对列表进行排序,并输出结果。 需要注意的是,reversed() 方法只能用于已经实现了 Comparator 接口的类。如果你想使用 reversed() 方法,但你的类没有实现 Comparator 接口,你需要实现它并重写 compare() 方法。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值