treeset比较器排序
时间: 2023-12-02 14:37:59 浏览: 34
在使用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接口的匿名内部类来定义了排序规则,比较方法中返回的是两个字符串长度的差值,这样就可以按照字符串长度进行排序了。
treeset 自定义排序
在 TreeSet 中实现自定义排序的方法是通过提供一个比较器(Comparator)来指定排序规则。可以通过以下步骤来实现:
1. 创建一个实现了 Comparator 接口的类,该类将定义自定义排序规则。
2. 在创建 TreeSet 时,将自定义的比较器传递给 TreeSet 构造函数。
例如,假设我们有一个 User 类,我们想根据用户的年龄和姓名来排序。我们可以创建一个名为 UserCompForAgeAndName 的类,实现 Comparator 接口,并在其中定义比较逻辑。然后可以使用以下代码创建一个使用自定义比较器的 TreeSet:
```java
TreeSet<User> userSet = new TreeSet<>(new User.UserCompForAgeAndName());
```
在上述代码中,User.UserCompForAgeAndName() 是自定义比较器的实例化。