treeset比较器排序
时间: 2023-12-02 22:37:59 浏览: 127
在使用TreeSet时,可以通过传入一个比较器来实现自定义排序。比较器需要实现Comparator接口中的compare方法,根据需要的排序规则进行比较并返回结果。
例如,如果我们想按照字符串长度进行排序,可以这样实现比较器:
```
class StringLengthComparator implements Comparator<String> {
public int compare(String s1, String s2) {
return Integer.compare(s1.length(), s2.length());
}
}
```
然后在创建TreeSet时传入该比较器即可:
```
Set<String> set = new TreeSet<>(new StringLengthComparator());
```
这样,添加到set中的字符串会按照长度从小到大排序。
相关问题
treeset 带有排序么
是的,Java中的TreeSet是有序的集合,它对元素进行排序。TreeSet中的元素默认按照其自然排序规则进行排序,如果要自定义排序规则,则需要在创建TreeSet时传入一个Comparator比较器对象。
举个例子,如果我们要创建一个按照字符串长度排序的TreeSet,可以这样写:
```java
TreeSet<String> treeSet = new TreeSet<>(new Comparator<String>() {
@Override
public int compare(String s1, String s2) {
return s1.length() - s2.length();
}
});
treeSet.add("apple");
treeSet.add("banana");
treeSet.add("pear");
for (String str : treeSet) {
System.out.println(str);
}
```
运行结果为:
```
pear
apple
banana
```
在这个例子中,我们通过传入一个实现了Comparator接口的匿名内部类来定义了排序规则,比较方法中返回的是两个字符串长度的差值,这样就可以按照字符串长度进行排序了。
Java中TreeSet如何进行排序
在Java中,`TreeSet`是一种基于红黑树实现的集合,它自动维护元素的无序排列,并且保证了所有元素的唯一性。当添加新元素时,`TreeSet`会自动对元素进行排序,排序依据是自然顺序或者自定义提供的比较器(Comparator)。如果你想要定制排序规则,可以传递一个实现了`Comparator<T>`接口的实例给构造函数。
例如,创建一个按整数大小升序排序的`TreeSet`:
```java
import java.util.TreeSet;
public class Main {
public static void main(String[] args) {
TreeSet<Integer> treeSet = new TreeSet<>();
treeSet.add(5);
treeSet.add(1);
treeSet.add(3);
// 输出:[1, 3, 5]
for (int num : treeSet) {
System.out.println(num);
}
}
}
```
如果你想按照其他方式进行排序,比如字符串长度降序,你可以这样做:
```java
TreeSet<String> stringTreeSet = new TreeSet<>((a, b) -> b.length() - a.length());
```
这里传递了一个比较器,该比较器根据字符串长度来决定元素的顺序。
阅读全文