使用treeset和comparator
时间: 2023-05-03 12:02:45 浏览: 117
使用treeset和comparator可以实现对集合中元素的自定义排序和去重。treeset是一个有序的集合,comparator是一个比较器,可以定义元素之间的比较规则。使用treeset和comparator可以方便地对元素进行排序,并自动去重。
相关问题
3.使用TreeSet和Comparator,编写TreeSetTest类,要求对TreeSet中的元素"HashSet"、"ArrayList"、"TreeMap"、"HashMap"、"TreeSet"、"LinkedList"进行升序和倒序排列。
import java.util.*;
public class TreeSetTest {
public static void main(String[] args) {
TreeSet<String> set = new TreeSet<>(new Comparator<String>() {
@Override
public int compare(String s1, String s2) {
return s1.compareTo(s2);
}
});
set.add("HashSet");
set.add("ArrayList");
set.add("TreeMap");
set.add("HashMap");
set.add("TreeSet");
set.add("LinkedList");
System.out.println("升序排列:");
for (String s : set) {
System.out.println(s);
}
TreeSet<String> reverseSet = new TreeSet<>(new Comparator<String>() {
@Override
public int compare(String s1, String s2) {
return s2.compareTo(s1);
}
});
reverseSet.addAll(set);
System.out.println("倒序排列:");
for (String s : reverseSet) {
System.out.println(s);
}
}
}
1. 使用TreeSet和Comparator,编写TreeSetTest2类,要求对TreeSet中的元素1-元素10进行排列,排序逻辑为奇数在前偶数在后,奇数按照升序排列,偶数按照降序排列。
好的,这是一个关于使用TreeSet和Comparator的问题,我可以回答。以下是TreeSetTest2类的代码:
```java
import java.util.Comparator;
import java.util.TreeSet;
public class TreeSetTest2 {
public static void main(String[] args) {
TreeSet<Integer> set = new TreeSet<>(new Comparator<Integer>() {
@Override
public int compare(Integer o1, Integer o2) {
if (o1 % 2 != o2 % 2) {
return o1 % 2 == 1 ? -1 : 1; // 奇数在前偶数在后
} else {
return o1 % 2 == 1 ? o1 - o2 : o2 - o1; // 奇数按照升序排列,偶数按照降序排列
}
}
});
for (int i = 1; i <= 10; i++) {
set.add(i);
}
System.out.println(set);
}
}
```
我们使用了匿名内部类实现了Comparator接口,定义了排序逻辑。首先判断两个元素的奇偶性,奇数在前偶数在后;然后分别按照升序或降序排列。
最后输出的结果为:[1, 3, 5, 7, 9, 10, 8, 6, 4, 2],符合要求。
阅读全文