本文用于记录Java语言常用的一些排序方法,主要为Java原生方法。
java// 用户实体List
List<User> list;
// 按照 userId 正序排序
list.sort(Comparator.comparing(Incident::getUserId));
java// 用户实体List
List<User> list;
// 按照 userId 倒叙排序
list.sort(Comparator.comparing(Incident::getUserId).reversed());
以下示例均以
Integer
演示,其他类型数字不再提供示例。
java// 年份数字集合
List<Integer> years;
// 1
Collections.sort(years);
java// 年份数字集合
List<Integer> years;
// 2
list.sort(Comparator.naturalOrder());
java// 年份数字集合
List<Integer> years;
// 3
list = list.stream()
.sorted()
.collect(Collectors.toList());
java// 年份数字集合
List<Integer> years;
// 4 Integer类型示例
list.sort(Comparator.comparingInt(o -> o));
java// 年份数字集合
List<Integer> years;
// 5: i1-i2 > 0则交换位置,所以是正序
list.sort((i1, i2) -> i1 - i2);
javaList<Integer> years;
int n = years.length;
/** 冒泡正序排序 **/
// 外层循环控制比较的轮数
for (int i = 0; i < n - 1; i++) {
// 内层循环进行相邻元素的比较和交换
for (int j = 0; j < n - i - 1; j++) {
if (years[j] > years[j + 1]) {
// 交换相邻元素
int temp = years[j];
years[j] = years[j + 1];
years[j + 1] = temp;
}
}
}
倒叙只给出一个示例,其他参考正序做修改即可。
java// 年份数字集合
List<Integer> years;
// 倒叙排序
years.sort(Collections.reverseOrder());
String
类型正常排序与Integer
没有什么大区别,参考修改即可,下面给出一些特殊需求排序:
javaList<String> list; list.sort(Comparator.comparing(String::length));
普通中文与普通字符串排序一样,一些特殊中文、字符可能用得到该方法
javaList<String> chineseList = Arrays.asList("张三", "李四", "王五", "赵六");
// 使用 Collator 进行排序,特殊使用请自行摸索
Collator collator = Collator.getInstance();
Collections.sort(chineseList, collator);
javaInteger[] array = {64, 34, 25, 12, 22, 11, 90};
Arrays.sort(array);
javaInteger[] array = {64, 34, 25, 12, 22, 11, 90};
int n = array.length;
// 外层循环控制比较的轮数
for (int i = 0; i < n - 1; i++) {
// 内层循环进行相邻元素的比较和交换
for (int j = 0; j < n - i - 1; j++) {
if (array[j] > array[j + 1]) {
// 交换相邻元素
int temp = array[j];
array[j] = array[j + 1];
array[j + 1] = temp;
}
}
}
javaInteger[] array = {64, 34, 25, 12, 22, 11, 90};
Arrays.sort(array, Collections.reverseOrder());
javaInteger[] array = {64, 34, 25, 12, 22, 11, 90};
int n = array.length;
// 外层循环控制比较的轮数
for (int i = 0; i < n - 1; i++) {
// 内层循环进行相邻元素的比较和交换
for (int j = 0; j < n - i - 1; j++) {
if (array[j] < array[j + 1]) {
// 交换相邻元素
int temp = array[j];
array[j] = array[j + 1];
array[j + 1] = temp;
}
}
}
javaInteger[] array = {64, 34, 25, 12, 22, 11, 90};
// 数组转List
List<Integer> list = Arrays.asList(array);
// List转数组
array = list.toArray(new Integer[0]);
本文作者:DingDangDog
本文链接:
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!