Java语言排序比较函数及代码示例
【摘要】 Java语言排序比较函数及代码示例 1、字符串比较Java String类实现了compareTo接口,可用于两个字符串的比较(基于字典序),用法为str1.compareTo(str2),返回一个整数值。按字典序str1等于str2字符串时,返回0按字典序str1小于str2时,返回值小于0,按字典序str1大于str2时,返回值大于0。the value is equal to {@c...
Java语言排序比较函数及代码示例
1、字符串比较
Java String类实现了compareTo接口,可用于两个字符串的比较(基于字典序),用法为str1.compareTo(str2),返回一个整数值。
- 按字典序str1等于str2字符串时,返回0
- 按字典序str1小于str2时,返回值小于0,
- 按字典序str1大于str2时,返回值大于0。
the value is equal to {@code 0} if the argument string is equal to this string;
a value less than {@code 0} if this string is lexicographically less than the string argument;
and a value greater than {@code 0} if this string is lexicographically greater than the string argument.
2、字符串序列排序
sort 函数可用于字符串序列的排序,默认按字典序升序排序。基于sort函数有多种方式可以实现降序排序,存储字符串可用List或Array。
List | Array | |
---|---|---|
调用String类的compareTo接口自行实现比较函数 | Y | Y |
Collections.reverseOrder() 或 Comparator.reverseOrder() | Y | Y |
利用stream | Y | Y |
sort()升序 + reverse()反转 | Y | Y |
import java.util.Arrays;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
import java.util.stream.Collectors;
public class SortDemos {
public static void main(String[] args) {
final String str1 = "abc";
final String str2 = "bcd";
System.out.println("字典序低的字符串与字典序高的字符串比较:" + str1.compareTo(str2));
System.out.println("字典序高的字符串与字典序低的字符串比较:" + str2.compareTo(str1));
String[] arr = { "apple", "xiaomi", "huawei", "163", "8848" };
// #########################################################
// List.sort()-自行实现比较函数
List<String> list = Arrays.asList(arr);
// 升序 o1是发起比较的元素、要加入列表的元素,o2是现有列表的元素
list.sort((o1, o2) -> o1.compareTo(o2));
System.out.println("List.sort()-自行实现比较函数 升序:" + list);
// 降序
list.sort((o1, o2) -> o2.compareTo(o1));
System.out.println("List.sort()-自行实现比较函数 降序:" + list);
// List.sort()-Collections.reverseOrder()
list = Arrays.asList(arr);
list.sort(Collections.reverseOrder());
System.out.println("List.sort()-Collections.reverseOrder():" + list);
// List.sort()-Comparator.reverseOrder()
list = Arrays.asList(arr);
list.sort(Comparator.reverseOrder());
System.out.println("List.sort()-Comparator.reverseOrder():" + list);
// List.sort()-stream
list = Arrays.asList(arr);
List<String> list2 = list.stream().sorted(Comparator.reverseOrder()).collect(Collectors.toList());
System.out.println("List.sort()-stream:" + list2);
// List.sort()-sort升序+reverse反转
list = Arrays.asList(arr);
System.out.println("List.sort()-原生:" + list);
Collections.sort(list);
System.out.println("List.sort()-sort升序:" + list);
Collections.reverse(list);
System.out.println("List.sort()-reverse反转:" + list);
// #########################################################
// Array排序-比较函数
// 字典序降序排序,如果升序改为 第二个参数改为 o1.compareTo(o2)即可
Arrays.sort(arr, (o1, o2) -> o2.compareTo(o1));
System.out.println("数组字典序排序:" + Arrays.toString(arr));
// 字典序降序升序
Arrays.sort(arr, (o1, o2) -> o1.compareTo(o2));
System.out.println("数组字典序升序:" + Arrays.toString(arr));
}
}
输出如下:
字典序低的字符串与字典序高的字符串比较:-1
字典序高的字符串与字典序低的字符串比较:1
List.sort()-自行实现比较函数 升序:[163, 8848, apple, huawei, xiaomi]
List.sort()-自行实现比较函数 降序:[xiaomi, huawei, apple, 8848, 163]
List.sort()-Collections.reverseOrder():[xiaomi, huawei, apple, 8848, 163]
List.sort()-Comparator.reverseOrder():[xiaomi, huawei, apple, 8848, 163]
List.sort()-stream:[xiaomi, huawei, apple, 8848, 163]
List.sort()-原生:[xiaomi, huawei, apple, 8848, 163]
List.sort()-sort升序:[163, 8848, apple, huawei, xiaomi]
List.sort()-reverse反转:[xiaomi, huawei, apple, 8848, 163]
数组字典序排序:[xiaomi, huawei, apple, 8848, 163]
数组字典序升序:[163, 8848, apple, huawei, xiaomi]
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)