有的时候需要对数组里的element进行排序。当然可以自己编写合适的排序方法,但既然java包里有自带的Arrays.sort排序方法,在 数组元素比较少的时候为何不用?

Sorting an Array 1. 数字排序  int[] intArray = new int[] { 4, 1, 3, -23 };

Arrays.sort(intArray);

输出: [-23, 1, 3, 4]

2. 字符串排序,先大写后小写 String[] strArray = new String[] { "z", "a", "C" };

Arrays.sort(strArray);

输出: [C, a, z]

3. 严格按字母表顺序排序,也就是忽略大小写排序 Case-insensitive sort

Arrays.sort(strArray, String.CASE_INSENSITIVE_ORDER);

输出: [a, C, z]

4. 反向排序, Reverse-order sort

Arrays.sort(strArray, Collections.reverseOrder());

输出:[z, a, C]

5. 忽略大小写反向排序 Case-insensitive reverse-order sort

Arrays.sort(strArray, String.CASE_INSENSITIVE_ORDER);

Collections.reverse(Arrays.asList(strArray));

输出: [z, C, a]

java初学者最常见的错误思想,就是试图去写一些方法来完成数组的排序功能,其实,数组排序功能,在java的api里面早已实现,我们没有 必要去重复制造轮子。

Arrays类有一个静态方法sort,利用这个方法我们可以传入我们要排序的数组进去排序,因为我们传入的是一个数组的引用,所以排序完成的 结果也通过这个引用的来更改数组.对于整数、字符串排序,jdk提供了默认的实现,如果要对一个对象数组排序,则要自己实现 java.util.Comparator接口。

package com.gjh.gee.arrays;

import java.util.Arrays;

public class ArraySortDemo {

public void sortIntArray() {

int[] arrayToSort = new int[] { 48, 5, 89, 80, 81, 23, 45, 16, 2 };

System.out.println("排序前");

for (int i = 0; i

System.out.println(arrayToSort[i]);

// 调用数组的静态排序方法sort

Arrays.sort(arrayToSort);

System.out.println("排序后");

for (int i = 0; i

System.out.println(arrayToSort[i]);

}

public void sortStringArray() {

String[] arrayToSort = new String[] { "Oscar", "Charlie", "Ryan",

"Adam", "David" };

System.out.println("排序前");

for (int i = 0; i

System.out.println(arrayToSort[i]);

System.out.println("排序后");

// 调用数组的静态排序方法sort

Arrays.sort(arrayToSort);

for (int i = 0; i

System.out.println(arrayToSort[i]);

}

public void sortObjectArray() {

Dog o1 = new Dog("dog1", 1);

Dog o2 = new Dog("dog2", 4);

Dog o3 = new Dog("dog3", 5);

Dog o4 = new Dog("dog4", 2);

Dog o5 = new Dog("dog5", 3);

Dog[] dogs = new Dog[] { o1, o2, o3, o4, o5 };

System.out.println("排序前");

for (int i = 0; i

Dog dog = dogs[i];

System.out.println(dog.getName());

}

Arrays.sort(dogs, new ByWeightComparator());

System.out.println("排序后:");

for (int i = 0; i

Dog dog = dogs[i];

System.out.println(dog.getName());

}

}

public static void main(String[] args) {

ArraySortDemo t = new ArraySortDemo();

t.sortIntArray();

t.sortStringArray();

t.sortObjectArray();

}

}

package com.gjh.gee.arrays;

public class Dog {

private String name;

private int weight;

public Dog(String name, int weight) {

this.setName(name);

this.weight = weight;

}

public int getWeight() {

return weight;

}

public void setWeight(int weight) {

this.weight = weight;

}

public void setName(String name) {

this.name = name;

}

public String getName() {

return name;

}

}

package com.gjh.gee.arrays;

import java.util.Comparator;

public class ByWeightComparator implements Comparator {

public final int compare(Object pFirst, Object pSecond) {

int aFirstWeight = ((Dog) pFirst).getWeight();

int aSecondWeight = ((Dog) pSecond).getWeight();

int diff = aFirstWeight - aSecondWeight;

if (diff > 0)

return 1;

if (diff

return -1;

else

return 0;

}

}

下面补充一个Collections.sort排序,原理和Arrays.sort差不多。

//一个POJO例子

class User {

String name;

String age;

public User(String name,String age){

this.name=name;

this.age=age;

}

public String getAge() {

return age;

}

public void setAge(String age) {

this.age = age;

}

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

}

//具体的比较类,实现Comparator接口

import java.util.Comparator;

import java.util.List;

import java.util.ArrayList;

import java.util.Collections;

public class ComparatorUser implements Comparator{

public int compare(Object arg0, Object arg1) {

User user0=(User)arg0;

User user1=(User)arg1;

//首先比较年龄,如果年龄相同,则比较名字

int flag=user0.getAge().compareTo(user1.getAge());

if(flag==0){

return user0.getName().compareTo(user1.getName());

}else{

return flag;

}

}

}

//测试类

public class SortTest {

public static void main(String[] args){

List userlist=new ArrayList();

userlist.add(new User("dd","4"));

userlist.add(new User("aa","1"));

userlist.add(new User("ee","5"));

userlist.add(new User("bb","2"));

userlist.add(new User("ff","5"));

userlist.add(new User("cc","3"));

userlist.add(new User("gg","6"));

ComparatorUser comparator=new ComparatorUser();

Collections.sort(userlist, comparator);

for (int i=0;i

User user_temp=(User)userlist.get(i);

System.out.println(user_temp.getAge()+","+user_temp.getName());

}

}

}

//首先年龄排序,如果年龄相同,则按名字排序

结果:

1, aa

2, bb

3, cc

4, dd

5, ee                    //注意:同样是5岁的人,则比较名字(ee,ff),然后排序

5, ff

6, gg

java数组按大小排序_Java数组排序相关推荐

  1. php 数组 比较大小排序,php数组排序函数 比较全面

    如果你已经使用了一段时间PHP的话,那么,你应该已经对它的数组比较熟悉了--这种数据结构允许你在单个变量中存储多个值,并且可以把它们作为一个集合进行操作. 经常,开发人员发现在PHP中使用这种数据结构 ...

  2. java数组元素的排序_java学习之数组元素排序,冒泡排序和选择排序

    java学习之数组元素排序 选择排序 *返回值类型 void *参数列表 int[] arr * 分析:选择排序 * 第一次arr[0]与arr[1-4]比较,总共比较4次 * 第二次arr[1]与a ...

  3. java数组按照大小排列_Java怎么让数组中元素按照牌值从小到大的顺序排列

    展开全部 你说的这些牌是用数组来存放的,所以有些麻烦.直接复制运行,更改牌的62616964757a686964616fe58685e5aeb931333332643838数量测试,有不懂的再问我pa ...

  4. java集合按大小排序_JAVA中对List根据map某个key值从小到大顺序进行排序

    /** * @功能描述:排序方法 * @author LJ * 2018年10月29日 -下午2:38:15 */ public class java_ListMapSort { public sta ...

  5. java给xyz大小排序_java实现递归实现string xyz排序

    先用上面的一张图说明逻辑,这就是递归的逻辑. xy排序就相当于在x的空位插上y,x只有两个空位,y插前面得带yx,y插后面得到xy xyz排序就相当于在xy排序的所有结果插上z,结果如图 代码实现如下 ...

  6. java给xyz大小排序_java递归实现string xyz排序

    先用上面的一张图说明逻辑,这就是递归的逻辑. xy排序就相当于在x的空位插上y,x只有两个空位,y插前面得带yx,y插后面得到xy xyz排序就相当于在xy排序的所有结果插上z,结果如图 代码实现如下 ...

  7. java 数组中插入元素_Java数组添加元素

    java 数组中插入元素 How to add elements to an array in java We know that java array size is fixed, so we ca ...

  8. java数组声明语句是_Java数组的声明和遍历

    Java 数组 数组对于每一门编程语言来说都是重要的数据结构之一,当然不同语言对数组的实现及处理也不尽相同. Java 语言中提供的数组是用来存储固定大小的同类型元素. 你可以声明一个数组变量,如 n ...

  9. java中list元素排序_java list集合元素根据某些字段排序

    一.jdk1.6的环境下 新建ComparatorSort类,并实现Comparator接口,重写compare方法 降序排序:o1的元素>o2的元素,并返回-1:o1的元素小于o2的元素,并返 ...

  10. Java数组与八大排序

    文章目录 浅谈数组 数组初始化 知识捡漏静态初始化写法 数组操作:反转 二维数组 数组的练习:根据数组元素查找该元素第一次在数组中出现的索引 方法1:挨个遍历查找法 方法2:二分查找法 二 数组常见的 ...

最新文章

  1. spring cloud gateway之服务注册与发现
  2. python检测文件夹中新增文件_python检测文件夹变化,并拷贝有更新的文件到对应目录...
  3. 用汇编写改进的冒泡排序
  4. java中实现同步的两种方式:syschronized和lock的区别和联系
  5. DDL 操作表 创建表
  6. 为什么阿里强制 boolean 类型变量不能使用 is 开头
  7. 组策略本地计算机策略导出,关于win10系统本地组策略备份和设置的详细步骤
  8. yarn的安装和使用
  9. 激光技术领域的又一重大突破:光学频率梳
  10. 不用任何工具重装Win7系统
  11. Unix平台下的常用命令技巧之五 资源与性能
  12. 基于Hadoop的电影推荐系统
  13. 如何处理授权和监督?
  14. 人脑是一台计算机吗?
  15. STM32F429_DWM物联网开发板
  16. arm架构 CF-WU810N网卡驱动安装经验
  17. ubuntu22.04和ubuntukylin22.04下载安装
  18. Retrofit的使用教程(一)
  19. Kafka之四:Kafka与Streaming集成
  20. Docker+Frp+NGinx+云服务器 实现HTTPS内网穿透

热门文章

  1. 双色球助手2.0---最新发布----完全免费
  2. 商业价值:中国互联网的产品经理时代
  3. Typora简易教程
  4. 支付:在线支付功能的概述
  5. 【数据库】MySQL单表查询
  6. 如何用O2OA公文编辑器制作标准的红头文件?
  7. 最不可思议的职场语录
  8. dnSpy反编译C#编译以后dll文件并调试
  9. 永中office linux卸载,永中office Linux版
  10. 使用Java对接永中格式转换