网站首页 > java教程 正文
在分析大量开源Java项目的源代码时,我发现Java开发人员经常以两种方式进行排序。一种使用的sort()是Collections或的方法,Arrays另一种使用的是排序的数据结构,例如TreeMap和TreeSet。
1.使用sort()方法
如果它是一个集合,请使用Collections.sort()方法。
// Collections.sort
List < ObjectName > list = new ArrayList < ObjectName > (); 集合。排序(列表,新的比较<对象名> () {
公共 INT比较(的ObjectName O1,O2的ObjectName ) {
返回 O1。的toString ()。的compareTo ( O2。的toString ());
} } );
如果是数组,请使用Arrays.sort()方法。
// Arrays.sort
ObjectName [ ] arr = new ObjectName [ 10 ] ;数组。排序( ARR,新比较<对象名> () {
公共 INT比较(的ObjectName O1,O2的ObjectName ) {
返回 O1。的toString ()。的compareTo ( O2。的toString ());
} } );
如果已经设置了集合或数组,这将非常方便。
2.使用排序的数据结构
如果是列表或集合,请使用TreeSet进行排序。
// TreeSet中
设置<对象名>的SortedSet = 新 TreeSet中<对象名> (新比较<对象名> () {
公共 INT比较(的ObjectName O1,O2的ObjectName ) {
返回 O1。的toString ()。的compareTo ( O2。的toString ());
} } );
sortedSet。addAll (unsortedSet );
如果是地图,请使用TreeMap进行排序。TreeMap按键排序。
// TreeMap中-使用String.CASE_INSENSITIVE_ORDER这是一个比较器,通过与compareToIgnoreCase订单字符串
地图< 字符串,整数>的SortedMap = 新 TreeMap的< 字符串,整数> (字符串。CASE_INSENSITIVE_ORDER );
sortedMap。putAll ( unsortedMap );
// TreeMap的-通常,定义比较
地图<对象名,字符串>的SortedMap = 新 TreeMap的<对象名,字符串> (新比较<对象名> () {
公共 INT比较(的ObjectName O1,O2的ObjectName ) {
返回。O1 的toString ()。的compareTo ( O2。的toString ());
} } );
sortedMap。putAll ( unsortedMap );
如果您要对该集合执行很多搜索操作,则此方法非常有用。排序后的数据结构的时间复杂度为O(logn),低于O(n)。
3.不良做法
仍然存在不良做法,例如使用自定义排序算法。以下面的代码为例,不仅算法效率低下,而且可读性差。这发生在不同形式的变体中。
双 t ; 对于 (int i = 0 ; i < 2 ; i ++ )
for (int j = i + 1 ; j < 3 ; j ++ )
if ( r [ j ] < r [ i ] ) {
t = r [ i ] ;
r [ i ] =r [ j ] ;
r [ j ] = t ;
}
最后,开发这么多年我也总结了一套学习Java的资料与面试题,如果你在技术上面想提升自己的话,可以关注我,私信发送领取资料或者在评论区留下自己的联系方式,有时间记得帮我点下转发让跟多的人看到哦。
猜你喜欢
- 2024-10-31 「Java基础」你必须知道的Java排序算法
- 2024-10-31 Java排序算法实现方式(算法思路 过程动图)
- 2024-10-31 一文读懂Java排序算法(所有的排序算法比较)
- 2024-10-31 java数据结构与算法之快速排序(用java实现快速排序算法)
- 2024-10-31 算法:什么是外部排序(外部排序有哪几种)
- 2024-10-31 Java 常见的排序算法,一次跟你说明白 ~ 直接插入排序
- 2024-10-31 Java排序算法-Java入门|Java基础课程
- 2024-10-31 必看java八大排序算法(java十大排序算法)
- 2024-10-31 冒泡排序、插入排序、选择排序、希尔排序
- 2024-10-31 一遍记住 Java 常用的八种排序算法与代码实现
你 发表评论:
欢迎- 最近发表
-
- pyinstaller打包python程序高级技巧
- 将python打包成exe的方式(python打包成exe的方法)
- Python打包:如何将 Flask 项目打包成exe程序
- py2exe实现python文件打包为.exe可执行程序(上篇)
- 如何将 Python 项目打包成 exe,另带卸载功能!
- Python打包成 exe,太大了该怎么解决?
- 可视化 Python 打包 exe,这个神器绝了!
- 案例详解pyinstaller将python程序打包为可执行文件exe
- Cocos 3.x 菜鸟一起玩:打包window程序
- 怎么把 Python + Flet 开发的程序,打包为 exe ?这个方法很简单!
- 标签列表
-
- java反编译工具 (77)
- java反射 (57)
- java接口 (61)
- java随机数 (63)
- java7下载 (59)
- java数据结构 (61)
- java 三目运算符 (65)
- java对象转map (63)
- Java继承 (69)
- java字符串替换 (60)
- 快速排序java (59)
- java并发编程 (58)
- java api文档 (60)
- centos安装java (57)
- java调用webservice接口 (61)
- java深拷贝 (61)
- 工厂模式java (59)
- java代理模式 (59)
- java.lang (57)
- java连接mysql数据库 (67)
- java重载 (68)
- java 循环语句 (66)
- java反序列化 (58)
- java时间函数 (60)
- java是值传递还是引用传递 (62)
本文暂时没有评论,来添加一个吧(●'◡'●)