Java中的数组排序
Java中的数组排序,一般是利用Arrays.sort(),这个方法是经过优化的快速排序。在Arrays种有多中形式的重载,在这里就不一一列举了。
数组排序的种类:
1.非降序排序, 非升序排序(就排序后数组元素排列的结果而言)
2.基本类型数据的排序,类类型数据的排序(就排序的对象而言)
排序示例:
int型数组的非降序排序:
package sort;
import java.util.Arrays;
public class Main {
public static void displayArray(int[] array) {
for (int i: array) {
System.out.print(i + " ");
}
System.out.println();
}
public static void main(String[] args) {
int[] arr = new int[]{43, 84, 3, 8, 4, 7, 3, 75, 82, 748, 35};
System.out.println("排序前:");
displayArray(arr);
Arrays.sort(arr);
System.out.println("排序后:");
displayArray(arr);
}
}
运行结果如下:

int型数组的非升序排序:
package sort; import java.util.Arrays;
import java.util.Comparator; public class Main {
public static void displayArray(Integer[] array) {
for (int i: array) {
System.out.print(i + " ");
}
System.out.println();
} public static void main(String[] args) {
Integer[] arr = new Integer[]{43, 84, 3, 8, 4, 7, 3, 75, 82, 748, 35}; System.out.println("排序前:");
displayArray(arr); Arrays.sort(arr, new JX()); System.out.println("排序后:");
displayArray(arr);
}
} class JX implements Comparator<Integer> {
@Override
public int compare(Integer o1, Integer o2) {
if (o1 <= o2) {
return 1;
}
return -1;
}
}
运行结果如下:

类类型的非降序排序:
package sort;
import java.util.Arrays;
public class Main {
public static void displayArray(Student[] student) {
for (Student s : student) {
System.out.println(s);
}
}
public static void main(String[] args) {
Student[] s = new Student[5];
s[0] = new Student("wwww", 20, 2.34);
s[1] = new Student("kkkk", 2, 2.34);
s[2] = new Student("pppp", 25, 3.34);
s[3] = new Student("hhhh", 12, 4.34);
s[4] = new Student("jjjj", 10, 5.34);
System.out.println("排序前:");
displayArray(s);
Arrays.sort(s);
System.out.println("排序后:");
displayArray(s);
}
}
/*
* 根据年龄进行非降序排序
*/
class Student implements Comparable<Student> {
private String name;
private int age;
private double height;
public Student(String name, int age, double height) {
this.name = name;
this.age = age;
this.height = height;
}
@Override
public int compareTo(Student o) {
if (this.age <= o.age) {
return -1;
}
return 1;
}
public String toString() {
return "Name: " + name + " Age: " + age + " Height: " + height;
}
}
运行结果如下:

类类型的非升序排序:
package sort;
import java.util.Arrays;
public class Main {
public static void displayArray(Student[] student) {
for (Student s : student) {
System.out.println(s);
}
}
public static void main(String[] args) {
Student[] s = new Student[5];
s[0] = new Student("wwww", 20, 2.34);
s[1] = new Student("kkkk", 2, 2.34);
s[2] = new Student("pppp", 25, 3.34);
s[3] = new Student("hhhh", 12, 4.34);
s[4] = new Student("jjjj", 10, 5.34);
System.out.println("排序前:");
displayArray(s);
Arrays.sort(s);
System.out.println("排序后:");
displayArray(s);
}
}
/*
* 根据年龄进行非升序排序
*/
class Student implements Comparable<Student> {
private String name;
private int age;
private double height;
public Student(String name, int age, double height) {
this.name = name;
this.age = age;
this.height = height;
}
@Override
public int compareTo(Student o) {
if (this.age <= o.age) {
return 1;
}
return -1;
}
public String toString() {
return "Name: " + name + " Age: " + age + " Height: " + height;
}
}
运行结果如下:

根据指定属性对类类型数组排序:
package sort; import java.util.Arrays;
import java.util.Comparator; public class Main {
public static void displayArray(Student[] student) {
for (Student s : student) {
System.out.println(s);
}
} public static void main(String[] args) {
Student[] s = new Student[5];
s[0] = new Student("wwww", 20, 2.34);
s[1] = new Student("kkkk", 2, 2.34);
s[2] = new Student("pppp", 25, 3.34);
s[3] = new Student("hhhh", 12, 4.34);
s[4] = new Student("jjjj", 10, 5.34);
/*
System.out.println("排序前:");
displayArray(s);
*/
System.out.println("按age进行非降序排序");
Arrays.sort(s, new SortByAge());
displayArray(s); System.out.println("按height进行非升序排序");
Arrays.sort(s, new SortByHeight());
displayArray(s);
}
} class Student {
private String name;
private int age;
private double height; public Student(String name, int age, double height) {
this.name = name;
this.age = age;
this.height = height;
} public String toString() {
return "Name: " + name + " Age: " + age + " Height: " + height;
} public int getAge() {
return age;
} public double getHeight() {
return height;
}
} /*
* 按age进行非降序排序
*/
class SortByAge implements Comparator<Student> {
@Override
public int compare(Student o1, Student o2) {
if (o1.getAge() <= o2.getAge()) {
return -1;
}
return 1;
}
} /*
* 按height进行非升序排序
*/
class SortByHeight implements Comparator<Student> {
@Override
public int compare(Student o1, Student o2) {
if (o1.getHeight() - o2.getHeight() < 0.01) {
return 1;
}
return -1;
} }
运行结果如下:

Java中的数组排序的更多相关文章
- java中sort方法的自定义比较器写法(转载)
java中sort方法的自定义比较器写法 摘要 在做一些算法题时常常会需要对数组.自定义对象.集合进行排序. 在java中对数组排序提供了Arrays.sort()方法,对集合排序提供Collecti ...
- java中Comparator的用法 -- 实现集合和数组排序
在java中,如果要对集合对象或数组对象进行排序,需要实现Comparator接口以达到我们想要的目标. 接下来我们模拟下在集合对象中对日期属性进行排序 一.实体类Step package com.l ...
- Java 中的数组操作
前言 在Java中,有很多封装好的类可以用来操纵数组(排序,复制等等),使得数组使用起来非常的方便.这就是高级语言带来的好处. 代码示例 - 一维数组 package test; import jav ...
- 数组在C++和java中的区别
几乎所有的程序设计语言都支持数组.在C和C++中使用数组是很危险的.因为C和C++中的数组就是内存块.如果一个程序要访问其自身内存块之外的数组,或者在数组初始化之前使用它,都会产生难以预料的后果. j ...
- 【JAVA零基础入门系列】Day10 Java中的数组
什么是数组?顾名思义,就是数据的组合,把一些相同类型的数放到一组里去. 那为什么要用数组呢?比如需要统计全班同学的成绩的时候,如果给班上50个同学的成绩信息都命名一个变量进行存储,显然不方便,而且在做 ...
- 【Java学习笔记之十】Java中循环语句foreach使用总结及foreach写法失效的问题
foreach语句使用总结 增强for(part1:part2){part3}; part2中是一个数组对象,或者是带有泛性的集合. part1定义了一个局部变量,这个局部变量的类型与part2中的对 ...
- Java中常见的比较器的实现方法
在Java中经常会涉及到对象数组的排序问题,那么就涉及到对象之间的比较问题. 通常对象之间的比较可以从两个方面去看: 第一个方面:对象的地址是否一样,也就是是否引用自同一个对象.这种方式可以直接使用& ...
- javascript中对两个对象进行排序 和 java中的两个对象排序
javascript中的对象数组排序 一 定义一个对象数组 var text = [{"name":"张","age":24},{" ...
- 【Java】Java中的Collections类——Java中升级版的数据结构【转】
一般来说课本上的数据结构包括数组.单链表.堆栈.树.图.我这里所指的数据结构,是一个怎么表示一个对象的问题,有时候,单单一个变量声明不堪大用,比如int,String,double甚至一维数组.二维数 ...
随机推荐
- iOS开发——网络编程Swift篇&(三)同步Get方式
同步Get方式 // MARK: - 同步Get方式 func synchronousGet() { //创建NSURL对象 var url:NSURL! = NSURL(string: " ...
- 文本编辑器Nano实用快捷键
一.复制.剪切和粘贴文本 1.行复制.剪切和粘贴 Alt+6:复制光标所在行. Ctrl+K:剪切光标所在行. Ctrl+U:粘贴. 2.自由复制.剪切和粘贴 自由复制: Ctrl+6:设置复制文本的 ...
- Java_Spring MVC_Servlet
Spring MVC 例子 http://www.cnblogs.com/liukemng/p/3724379.html 详解: http://jinnianshilongnian.iteye.com ...
- Scala中的构造器和高阶函数
构造器 在定义类时可以定义主构造器.主构造器可以同时声明字段. /** * 主构造器 * @author Administrator */ //在scala中,类和方法交织在一起 class Test ...
- 关于JDK中的集合总结(三)
泛型: jdk1.5出现的安全机制. 好处: 1,将运行时期的问题ClassCastException转到了编译时期. 2,避免了强制转换的麻烦. <>:什么时候用?当操作的引用数据类型不 ...
- 练习题之Wait/Notify
方案一: public class PrintABC { public static void main(String[] args) { AtomicInteger synObj = ); Runn ...
- hdu 2412 树形DP
思路:对于最大的人数很容易想到,就直接dp.但对于最大值是否唯一就需要应用辅助数组,isOnly[i][0]表示dp[i][0]是否唯一,同理isOnly[i][1]. 那么当(dp[v][0]> ...
- 解决python 提示 SyntaxError: Missing parentheses in call to 'print'
刚刚学习python,练习他的输出,发现输出一个常量时报错了,如下: 发现是因为python2.X版本与python3.X版本输出方式不同造成的在python3.X的,输入内容时都要带上括号pytho ...
- ACM进阶
ACM队不是为了一场比赛而存在的,为的是队员的整体提高. 大学期间,ACM队队员必须要学好的课程有: l C/C++两种语言 l 高等数学 l 线性代数 l 数据结构 l 离散数学 l 数据库原理 l ...
- MySQL同主机不同数据库的复制命令
MySQL同主机不同数据库的复制命令:注意运行在Terminal中,不运行在MySQL命令行中. 1 mysqldump Portal_DEV -u root -ppassword1$ --add-d ...