`

对象数组,按属性排序(Arrays.sort总结)

阅读更多

对象按属性排序,原理就是实现了java.util.Comparator接口的对象,传进去对象,重写了compare方法!

看java.util.Comparator

1:java.util.Comparator是一个接口,只包含两个方法:
方法摘要
 int compare(T o1, T o2)
          比较用来排序的两个参数。
 boolean equals(Object obj)
          指示是否其他对象“等于”此 Comparator。


 
2:在JDK中对java.util.Comparator的功能的解释为:“强行对某些对象 collection 进行整体排序”。
具体的实现是在compare(T o1, T o2)方法中自定义排序算法,然后将Comparator对象(实现了java.util.Comparator接口的对象)作为一个参数传递给欲排序对象collection的某些排序方法。某些排序方法指的是能够接受java.util.Comparator参数的方法,比如:java.util. Arrays的public static void sort(Object[] a, Comparator c)

 

import java.util.Arrays;
import java.util.Comparator;

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 < arrayToSort.length; i++){
    System.out.print(arrayToSort[i]+",");
   }
   // 调用数组的静态排序方法sort
  Arrays.sort(arrayToSort);
   System.out.println();
   System.out.println("排序后:");
   for (int i = 0; i < arrayToSort.length; i++){
    System.out.print(arrayToSort[i]+",");
   }
}

/**
* 字符型数组排序demo
*/
public void sortStringArray() {
   String[] arrayToSort = new String[] { "Oscar", "Charlie", "Ryan",
     "Adam", "David","aff","Aff" };
   System.out.println();
   System.out.println("字符型数组排序,排序前:");
   for (int i = 0; i < arrayToSort.length; i++){
    System.out.print(arrayToSort[i]+",");
   }
   System.out.println();
   System.out.println("排序后:");
   // 调用数组的静态排序方法sort
   Arrays.sort(arrayToSort);

   for (int i = 0; i < arrayToSort.length; i++){
    System.out.print(arrayToSort[i]+",");
   }
}

/**
* 对象数组排序demo
*/
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();
   System.out.println("对象数组排序排序前:");
   for (int i = 0; i < dogs.length; i++) {
    Dog dog = dogs[i];
    System.out.print(dog.getName()+"["+dog.getWeight()+"],");
   }
   Arrays.sort(dogs, new ByWeightComparator());
   System.out.println();
   System.out.println("排序后:");
   for (int i = 0; i < dogs.length; i++) {
    Dog dog = dogs[i];
    System.out.print(dog.getName()+"["+dog.getWeight()+"],");
   }
}

public static void main(String[] args) {
   ArraySortDemo t = new ArraySortDemo();
   t.sortIntArray();
   t.sortStringArray();
   t.sortObjectArray();
}
}

/**
* 定义了一个Dog类
*/
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;
}
}

/**
* 因为要对对象进行排序,所以要实现java.util.Comparator接口的compare(T o1, T o2)方法,在该方法中自定义排序算法。
*/
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 < 0)
    return -1;
   else
    return 0;
}
}

运行结果:

整数型数组排序,排序前:
48,5,89,80,81,23,45,16,2,
排序后:
2,5,16,23,45,48,80,81,89,
字符型数组排序,排序前:
Oscar,Charlie,Ryan,Adam,David,aff,Aff,
排序后:
Adam,Aff,Charlie,David,Oscar,Ryan,aff,
对象数组排序排序前:
dog1[1],dog2[4],dog3[5],dog4[2],dog5[3],
排序后:
dog1[1],dog4[2],dog5[3],dog2[4],dog3[5],

 

 

以上内容来自:本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/revo/archive/2006/04/26/677842.aspx

http://hi.baidu.com/javajavajava/blog/item/6c768c45c3a7442ecffca3ae.html

分享到:
评论

相关推荐

    JAVA基于Arrays.sort()实现数组升序和降序

    主要介绍了JAVA基于Arrays.sort()实现数组升序和降序,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

    Java Arrays.sort和Collections.sort排序实现原理解析

    主要介绍了Java Arrays.sort和Collections.sort排序实现原理解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

    Java编程实现中英混合字符串数组按首字母排序的方法

    在Java中对于字符串数组的排序,我们可以使用Arrays.sort(String[])方法很便捷的进行排序。例如: String[] arrays = new String[] { gyu, sdf, zf, 大同, 收到, 地方, 三等分, 的人, 反对高铁, 泛代数, 上的投入...

    JavaSE 基础 数组.pdf

    ● 排序数组:使用Arrays.sort()方法对数组进行排序。 ● 搜索数组:使用Arrays.binarySearch()方法在一个已排序的数组中搜索一个元素。 三、数组的五种赋值方法和使用方法 声明数组 int[] arr; //开辟三个空间 ...

    Apress.PHP.Arrays.Single.Multi-dimensional.Associative.and.Object.Arrays.

    Apress.PHP.Arrays.Single.Multi-dimensional.Associative.and.Object.Arrays.in.PHP.7.1484225554.rar 最新书籍,精讲PHP数组,文字版PDF

    第五节 数组 (Arrays).docx

    第五节 数组 (Arrays).docx

    System.arraycopy和Arrays.copyOf

    个人研究所得,包含对其内部jdk源码的分析。 同时会结合ArrayList中对该两个方法的调用做进一步说明。...总结一句话:在允许的情况下,尽量调用System.arraycopy方法,实在不行再调用Arrays.copyOf方法。

    java各种功能集合和工具.rar

    Arrays.sort(int[] a, int fromIndex, int toIndex) 并行排序:JDK1.8新增 Arrays.parallelSort(int[] a) Arrays.parallelSort(int[] a, int fromIndex, int toIndex) 并行计算: JDK1.8新增 支持函数式编程 根据...

    Arrays.asList方法总结

    本文主要对Arrays.asList方法进行总结。具有很好的参考价值,下面跟着小编一起来看下吧

    Arduino项目开发 Control_Arrays_Arrays.pdf

    Arduino项目开发 Control_Arrays_Arrays.pdf Arduino项目开发 Control_Arrays_Arrays.pdf Arduino项目开发 Control_Arrays_Arrays.pdf Arduino项目开发 Control_Arrays_Arrays.pdf Arduino项目开发 Control_Arrays_...

    PHP.Arrays.in.PHP.7

    Gain an in-depth understanding of PHP 7 arrays. After a quick overview of PHP 7, each chapter concentrates on single, multi-dimensional, associative, and object arrays. PHP Arrays is a first of its ...

    Antenna Arrays.pdf

    Antenna Arrays.pdf

    java中的arrays.sort()代码详解

    主要介绍了Java中的Arrays.sort()代码详解,涉及Arrays.sort()简单示例,策略模式,”super”的使用等相关内容,具有一定借鉴价值,需要的朋友可以参考下。

    冒泡排序 算法(冒泡,选择,插入,数组排序)

    算法(冒泡,选择,插入,数组排序) package Teacher; import java.io.*;... java.util.Arrays.sort(a); // 检测一下排序的结果 for(int i : a){ System.out.print(" "+i); } } }

    VB.NET二维数组快速排序(更新)

    NewArrays(),为存放结果数组,SortColumnsOrOrders(),传递排序参数数组,偶数个为排序列号,奇数为升降序,0为升序,1为降序;FieldRow,是否有字段行(第一行),true为有字段行,false为无字段行,默认为无字段行;...

    数组排序和合并为字符串

    如何将数组排序后,以字符串的形式输出,Arrays.sort(a),Arrays.toString

    sort-deep-object-arrays:对嵌套在其他对象或数组中的对象和对象数组进行排序

    注意:不维护排序深对象数组 对嵌套在其他对象或数组中的对象和对象数组进行排序要求 v0.12或更高版本用法作为项目的本地依赖项安装: yarn add sort-deep-object-arrays 在命令行中运行npx sort-deep-object-arrays...

    MFC.develop.create.dynamic.arrays.rar_动态数组

    MFC编程动态数组创建经典开发代码Classic MFC programming to develop code to create dynamic arrays

    Java对象排序、中文排序、SortedSet排序使用和源码讲解

    排序终调用的是Arrays.sort方法来完成的,所以数组自然是用Arrays.sort了,而SortedSet里面内部也有排序功能也是类似的方式的来实现的,只是内部调用了相关的方法来完成而已;SortedSet只是一个接口,实现类有很多,...

    java 对象数组排序

    当遇到数组排序时,我们经常会使用学过的几种排序方法,而java 本身提供了Arrays.sort,在数据元素较少或者对效率要求不是抬高时,直接使用Arrays.sort来的更容易。查看一下源码后Arrays.sort 本身采用的是快速排序。

Global site tag (gtag.js) - Google Analytics