在Java中使用TreeSet比较器()方法的示例
TreeSet是Java中最重要的SortedSet接口实现之一,使用Tree进行存储。使用它们的自然排序来维护元素的顺序,无论是否提供了显式比较器。如果要正确实现Set接口,则必须与equals一致。
在java.util.TreeSet中存在 comparator()方法 ,它共享设置和返回可用于对TreeSet中元素进行排序的比较器的重要函数。如果集合遵循元素自然排序模式,则该方法返回Null值。
语法:
comp_set = (TreeSet)tree_set.comparator()
参数: 该方法不接受任何参数。
返回值: 比较器集用于按特定顺序对集合的元素进行排序。如果集合遵循默认或自然排序模式,则返回Null值。
在这里,我们将提出两个示例,下面的一个示例我们将使用元素的自然排序,稍后再使用特定的比较器来更好地理解它。
示例1: 使用元素的自然排序
// Java程序示例演示了使用comparator()方法
//使用元素的自然排序
//导入实用程序类
import java.util.*;
//主类
//TreeSet演示类
public class GFG {
//主驱动程序方法
public static void main(String[] args)
{
//创建一个整数类型的空TreeSet
TreeSet<Integer> tree_set = new TreeSet<Integer>();
//使用add()方法向集合中添加元素
tree_set.add(20);
tree_set.add(24);
tree_set.add(30);
tree_set.add(35);
tree_set.add(45);
tree_set.add(50);
//打印TreeSet对象中的元素
System.out.println("Tree Set values are: "
+ tree_set);
//创建一个比较器
Comparator comp = tree_set.comparator();
//打印并显示比较器值
System.out.println("Since the Comparator value is: "
+ comp);
//仅显示消息
System.out.println("it follows natural ordering");
}
}
输出:
Tree Set values are: [20, 24, 30, 35, 45, 50]
Since the Comparator value is: null
it follows natural ordering
示例2: 使用特定的比较器
// Java代码以说明使用比较器()
// 当使用特定比较器时
// 导入Comparator和TreeSet类
// 来自java.util包
import java.util.Comparator;
import java.util.TreeSet;
// 类1
// Helper类
class Helper implements Comparator<String> {
// 方法
// 比较两个字符串
public int compare(String str1, String str2)
{
String first_Str;
String second_Str;
first_Str = str1;
second_Str = str2;
// 使用compareTo()保证
return second_Str.compareTo(first_Str);
}
}
// 主类
// TreeSetDemo类
public class GFG {
// 主驱动程序
public static void main(String[] args)
{
// 创建一个字符串类型的空TreeSet
TreeSet<String> tree_set = new TreeSet<String>();
// 使用add()方法将元素添加到TreeSet对象中
tree_set.add("G");
tree_set.add("E");
tree_set.add("E");
tree_set.add("K");
tree_set.add("S");
tree_set.add("4");
// 在使用比较器之前打印集合中的元素
System.out.println("使用比较器之前的集合:" + tree_set);
// 再次创建一个字符串类型的空TreeSet
// 引用Helper类
TreeSet<String> tree_set1 = new TreeSet<String>(new Helper());
// 使用add()方法将元素添加到TreeSet对象中
tree_set1.add("G");
tree_set1.add("E");
tree_set1.add("E");
tree_set1.add("K");
tree_set1.add("S");
tree_set1.add("4");
// 在使用比较器之前打印集合中的元素
System.out.println("元素按降序排序:" + tree_set1);
}
}
输出
使用比较器之前的集合:[4, E, G, K, S]
元素按降序排序:[S, K, G, E, 4]
极客教程