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: [ 8,5,4,3,2,1]
通过将其转换为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);
}
}