Collection下子类的排序;List(ArrayList, LinkedList, Vector),Set(HashSet和LinkedHashSet的排序),Map的排序。免费

本文介绍了如何在Java中使用Collections.sort()方法对ArrayList、LinkedList、Vector、HashSet、LinkedHashSet以及TreeSet进行排序,以及如何通过转换为List或SortedMap对Map进行排序。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Collection父类下子类的排序

List

List: List接口的实现类,如ArrayList, LinkedList, Vector等,可以使用Collections.sort()方法进行排序。

1:按小到大排序

import java.util.ArrayList;
import java.util.Collections;

public class ArrayListSortExample {
    public static void main(String[] args) {
        // 创建一个ArrayList并添加元素
        ArrayList<Integer> numbers = new ArrayList<>();
        numbers.add(5);
        numbers.add(2);
        numbers.add(8);
        numbers.add(1);
        numbers.add(4);

        // 使用Collections.sort()方法对ArrayList进行排序
        Collections.sort(numbers);

        // 打印排序后的ArrayList
        System.out.println("排序后的ArrayList: " + numbers);
    }
}
//输出结果:
//    排序后的ArrayList: [1, 2, 4, 5, 8]

2.按大到小排序

import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;

public class ArrayListSortExample {
    public static void main(String[] args) {
        // 创建一个ArrayList并添加元素
        ArrayList<Integer> numbers = new ArrayList<>();
        numbers.add(5);
        numbers.add(2);
        numbers.add(8);
        numbers.add(1);
        numbers.add(4);

        // 使用Collections.sort()方法对ArrayList进行降序排序
        Collections.sort(numbers, Comparator.reverseOrder());

        // 打印排序后的ArrayList
        System.out.println("排序后的ArrayList: " + numbers);
    }
}
//输出结果
//排序后的ArrayList: [8, 5, 4, 2, 1]
//这里要注意:    
//在这个示例中,我们使用了Comparator.reverseOrder()方法来获取一个逆序比较器,并将其作为Collections.sort()方法的第二个参数。这样,numbers就会按照降序进行排序。

注意:

由于ArrayList, LinkedList, Vector都是List下的子类,所以排序LinkedList, Vector只需把上述代码中的ArrayList改为LinkedList或者Vector。



Set

1.HashSet和LinkedHashSet的排序

按小到大排序

import java.util.Set;
import java.util.HashSet;
import java.util.Collections;

public class SetSortExample {
    public static void main(String[] args) {
        // 创建一个Set并添加元素
        Set<Integer> numbers = new HashSet<>();
        numbers.add(5);
        numbers.add(2);
        numbers.add(8);
        numbers.add(1);
        numbers.add(4);

        // 使用Collections.sort()方法对Set进行排序
        Collections.sort(numbers);

        // 打印排序后的Set
        System.out.println("排序后的Set: " + numbers);
    }
}
排序后的Set: [1, 2, 4, 5, 8]

按大到小排序

import java.util.Set;
import java.util.HashSet;
import java.util.Collections;
import java.util.Comparator;

public class SetSortExample {
    public static void main(String[] args) {
        // 创建一个Set并添加元素
        Set<Integer> numbers = new HashSet<>();
        numbers.add(5);
        numbers.add(2);
        numbers.add(8);
        numbers.add(1);
        numbers.add(4);

        // 使用Collections.sort()方法对Set进行降序排序
        Collections.sort(numbers, Comparator.reverseOrder());

        // 打印排序后的Set
        System.out.println("排序后的Set: " + numbers);
    }
}
排序后的Set: [ 854321]

通过将其转换为List或SortedSet来排序

import java.util.*;

public class Main {
    public static void main(String[] args) {
        Set<Integer> set = new HashSet<>();
        set.add(5);
        set.add(3);
        set.add(1);
        set.add(4);
        set.add(2);

        // 转换为List并排序
        List<Integer> list = new ArrayList<>(set);
        Collections.sort(list);
        System.out.println("排序后的List: " + list);

        // 转换为SortedSet并排序
        SortedSet<Integer> sortedSet = new TreeSet<>(set);
        System.out.println("排序后的SortedSet: " + sortedSet);
    }
}

注意:上述HashSet可以和HashLinkedSet互换

2.TreeSet的排序:TreeSet是SortedSet接口的实现类,它会根据元素的自然顺序或者提供的Comparator来对元素进行排序。

按小到大排序

import java.util.*;

public class Main {
    public static void main(String[] args) {
        TreeSet<Integer> treeSet = new TreeSet<>();
        treeSet.add(5);
        treeSet.add(3);
        treeSet.add(1);
        treeSet.add(4);
        treeSet.add(2);

        System.out.println("排序后的TreeSet: " + treeSet);
    }
}
//排序后的TreeSet: [1, 2, 3, 4, 5]

按大到小排序

import java.util.*;

public class Main {
    public static void main(String[] args) {
        TreeSet<Integer> treeSet = new TreeSet<>(new Comparator<Integer>() {
            @Override
            public int compare(Integer o1, Integer o2) {
                return o2 - o1; // 降序排序
            }
        });
        treeSet.add(5);
        treeSet.add(3);
        treeSet.add(1);
        treeSet.add(4);
        treeSet.add(2);

        System.out.println("排序后的TreeSet: " + treeSet);
    }
}
//排序后的TreeSet: [5, 4, 3, 2, 1]


Map

Map接口本身没有直接的排序方法,但是可以通过将其转换为List或者使用SortedMap来实现排序。

1.使用Map转化成List排序

import java.util.*;

public class Main {
    public static void main(String[] args) {
        Map<Integer, String> map = new HashMap<>();
        map.put(3, "Three");
        map.put(1, "One");
        map.put(2, "Two");

        // 将Map转换为List并排序
        List<Map.Entry<Integer, String>> list = new ArrayList<>(map.entrySet());
        list.sort(new Comparator<Map.Entry<Integer, String>>() {
            @Override
            public int compare(Map.Entry<Integer, String> o1, Map.Entry<Integer, String> o2) {
                return o1.getKey().compareTo(o2.getKey()); // 根据key进行升序排序
            }
        });

        System.out.println("排序后的List: " + list);
    }
}
//排序后的List: [1=One, 2=Two, 3=Three]

2.使用SortedMap实现排序:

import java.util.*;

public class Main {
    public static void main(String[] args) {
        Map<Integer, String> map = new HashMap<>();
        map.put(3, "Three");
        map.put(1, "One");
        map.put(2, "Two");

        // 使用SortedMap实现排序
        SortedMap<Integer, String> sortedMap = new TreeMap<>(map);

        System.out.println("排序后的SortedMap: " + sortedMap);
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值