首先大家應該知道HashSet集合是不支持排序的,但是我們可以通過TreeSet集合對其進行間接排序
package SetDemo;
import java.util.Comparator;
import java.util.HashSet;
import java.util.TreeSet;
public class SetSortDemo {
public static void main(String[] args) {
/*
創建一個HashSet集合,HashSet集合沒有排序的功能,
創建一個TreeSet集合,將HashSet集合添加到此TreeSet集合中
可以通過Comparator<T>接口和Compatable<T>接口重寫compar()
和comparTo()方法去改寫排序規則
注意:Comparator<T>接口可以通過創建實現類的方式或者創建匿名內部類的方式
Compatabla<T>可以在對象中實現,在對象中去重寫compareTo()方法
*/
HashSet<Integer> has = new HashSet<Integer>();
has.add(1);
has.add(2);
has.add(-1);
has.add(7);
has.add(18);
TreeSet<Integer> tree = new TreeSet<>(new MyComparator());
tree.addAll(has);
System.out.println(tree); //自然排序 .comparator()方法
/*
實現Comparator<T>接口
可以通過創建匿名內部類的方式 (如果排序功能只用一次可以通過此方法)
還可以通過創建實現類的方式
*/
TreeSet<Integer> treeSet = new TreeSet<>(new Comparator<Integer>() {
@Override
public int compare(Integer o1, Integer o2) {
return o2 - o1; //改寫排序規則,降序排序
}
});
treeSet.add(2);
treeSet.add(1);
treeSet.add(-9);
treeSet.add(12);
treeSet.add(8);
System.out.println(treeSet);
}
}
//MyCompatabimport java.util.Comparator;
public class MyComparator implements Comparator<Integer>{
@Override
public int compare(Integer o1, Integer o2) {
return o2 - o1;
}
}
//運行結果
[18, 7, 2, 1, -1]
[12, 8, 2, 1, -9]