TreeSet的排序方式取决于元素的自然顺序或使用的比较器。具体来说,有两种排序方式可供选择:
Comparable
compareTo
Comparator
下面是示例代码演示自然排序和定制排序的使用方式:
import java.util.Comparator; import java.util.TreeSet; public class TreeSetSortingExample { public static void main(String[] args) { // 自然排序示例 TreeSet<Integer> numbers = new TreeSet<>(); numbers.add(5); numbers.add(2); numbers.add(8); numbers.add(1); numbers.add(4); System.out.println("自然排序 TreeSet:"); for (int num : numbers) { System.out.println(num); } // 定制排序示例 TreeSet<String> names = new TreeSet<>(new LengthComparator()); names.add("John"); names.add("Alice"); names.add("Peter"); names.add("Emma"); System.out.println("定制排序 TreeSet:"); for (String name : names) { System.out.println(name); } } } // 比较器:根据字符串长度进行比较 class LengthComparator implements Comparator<String> { @Override public int compare(String s1, String s2) { return Integer.compare(s1.length(), s2.length()); } }
在上述示例中,我们首先创建了一个自然排序的TreeSet(使用整数),并添加了几个元素。由于整数类型已经实现了Comparable接口,元素会按照自然顺序(升序)进行排序。
然后,我们创建了一个定制排序的TreeSet(使用字符串),并提供了一个比较器LengthComparator。该比较器根据字符串的长度进行比较。我们可以看到,定制排序的TreeSet按照字符串长度进行排序(升序)。
LengthComparator
总结来说,TreeSet的排序方式取决于使用的比较规则,可以是元素的自然顺序(如果元素实现了Comparable接口),也可以是通过提供的比较器来定义的定制顺序。
原文链接:codingdict.net