方式一Collections.sort()
List<Integer> numbers = Arrays.asList(3,1,4,2);
Collections.sort(numbers); // 直接修改原list → [1,2,3,4]
方式二:list.sort()(Java8推荐)
List<String> fruits = new ArrayList<>(Arrays.asList("apple","banana","pear"));
fruits.sort(Comparator.comparing(String::length));
// 按字符串长度排序
int[] arr = {5,2,7};
Arrays.sort(arr);
// 数组变为[2,5,7]
List<Integer> original = List.of(3,1,2);
List<Integer> sorted = original.stream() .sorted() .toList();
// 新list [1,2,3]
1. 数组用.length
(属性)
String[] names = {"Alice","Bob"};int len = names.length;
// 2
2. 集合都用.size()
List<String> list = List.of("a","b","c");
Set<Integer> set = Set.of(1,2,3);
Map<String,Integer> map = Map.of("a",1,"b",2);
int listSize = list.size();
// 3
int setSize = set.size();
// 3
int mapSize = map.size();
// 2
3. 字符串用.length()
String s = "hello";
int strLen = s.length();
// 5
list.sort()
sorted()
Arrays.sort()
TreeSet
或TreeMap
Q:为什么数组用length而集合用size?
A:这是Java的历史设计决定。数组是语言基础结构用字段(length),集合是类库用方法(size())
Q:sort()和sorted()区别?
A:
sort()
直接修改原集合sorted()
产生新集合,原集合不变Q:Set和Map也能排序吗?
A:
TreeSet/TreeMap
自动排序List<Student> students =students.sort(Comparator.comparing(Student::getScore).reversed());
// 获取学生列表// 按成绩降序排序
Map<String, Integer> wordCounts = List<Map.Entry<String, Integer>> top10 = wordCounts.entrySet().stream() .sorted(Map.Entry.comparingByValue().reversed()).limit(10).toList();
// 单词计数map// 按频率排序取前10
List<Object> mixed = Arrays.asList("apple", 123, "banana", 45.6);
mixed.sort(Comparator.comparing(o -> o.toString().length()));
// 按字符串长度排序
说明:
记住这个选择口诀:
集合排序用sort或sorted
,要问长度/大小是多少?
数组length集合size要记牢!