HashSet集合實現排序

首先大家應該知道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]
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章