通常Java开发人员如何进行数据排序?
时间:2022-04-29
本文章向大家介绍通常Java开发人员如何进行数据排序?,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
在实际工作中和平时学习中,以及分析开源Java项目的大量源代码后,我发现Java开发人员通常使用两种方法。一是使用Collections或 Arrays的 sort()方法 ,另一种是使用数据结构排序,如 TreeMap和 TreeSet。
网络配图 1、使用sort()方法进行排序,这也比较常的方法: 如果我们写代码时,用的是一个集合,那么使用Collections.sort()方法。 代码举例:
// 集合排序法Collections.sort
List<String> list =new ArrayList<String>();
Collections.sort(list, new Comparator<String>(){
public int compare(String o1, String o2){
return o1.toString().compareTo(o2.toString());
}});
如果代码实现中用的是一个数组,那么使用 Arrays.sort()方法。
// 数组排序法Arrays.sort
String[] arr =new String[10];
Arrays.sort(arr, new Comparator<String>(){
public int compare(String o1, String o2){
return o1.toString().compareTo(o2.toString());
}});
如果我们已经建立好一个集合或数组,用这种方法排序非常方便。
网络配图 2、使用数据结构排序方法 如果我们代码实现中是一个或一组列表,那么使用 TreeSet进行排序。
// TreeSet排序方法
Set<String> unsortedSet =new TreeSet<String>();
Set<String> sortedSet = new TreeSet<String>(new Comparator<String>() {
public int compare(String o1, String o2) {
return o1.toString().compareTo(o2.toString());
}
});
sortedSet.addAll(unsortedSet);
如果代码实现是一个Map,那么使用 TreeMap进行排序。
// TreeMap方法
Map<String, Integer> unsortedMap = new TreeMap<String, Integer>();
Map<String, Integer> sortedMap = new TreeMap<String, Integer>(String.CASE_INSENSITIVE_ORDER);
sortedMap.putAll(unsortedMap);
//TreeMap方法对比
Map<ObjectName, String> sortedMap1 = new TreeMap<ObjectName, String>(new Comparator<ObjectName>() {
public int compare(ObjectName o1, ObjectName o2) {
return o1.toString().compareTo(o2.toString());
}
});
sortedMap.putAll(unsortedMap);
这种方法在开发过程中非常有用,如果你想实现在集合中做搜索操作,数据结构排序方法,会提高效率。
网络配图 3、以下是一个经常使用的不合理的方法 比如使用自定义排序算法,下面以代码为例进行说明,这种方法不仅算法是无效的,而且可读性很差。
double t;
double[] r = new double[5];
for (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教程
- Java快速入门
- Java 开发环境配置
- Java基本语法
- Java 对象和类
- Java 基本数据类型
- Java 变量类型
- Java 修饰符
- Java 运算符
- Java 循环结构
- Java 分支结构
- Java Number类
- Java Character类
- Java String类
- Java StringBuffer和StringBuilder类
- Java 数组
- Java 日期时间
- Java 正则表达式
- Java 方法
- Java 流(Stream)、文件(File)和IO
- Java 异常处理
- Java 继承
- Java 重写(Override)与重载(Overload)
- Java 多态
- Java 抽象类
- Java 封装
- Java 接口
- Java 包(package)
- Java 数据结构
- Java 集合框架
- Java 泛型
- Java 序列化
- Java 网络编程
- Java 发送邮件
- Java 多线程编程
- Java Applet基础
- Java 文档注释
- 初识HTML
- iOS 点击按钮复制文本
- AntUI滑块Sliders
- AntUI卡片Cards
- AntUI常规Forms表单
- 二叉树:看看这些树的最大深度
- C++核心准则SF.5: .cpp文件必须包含定义它接口的.h文件
- C++核心准则SF.6:(只)为转换,基础库或在局部作用域内部使用using namspace指令
- C++核心准则SF.7:不要在头文件中的全局作用域中使用using namespace指令
- 二叉树:看看这些树的最小深度
- Hive初体验
- Hive数据的存储以及在centos7下进行Mysql的安装
- 一个改进的数学学习工具
- 配置hive的元数据到Mysql中
- 二叉树:我有多少个节点?