`

对象数组,按属性排序(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 对象数组按照多个属性进行排序

    总结一下,当需要对Java对象数组按多个属性排序时,我们可以: 1. 实现`Comparator`接口并自定义`compare()`方法。 2. 使用lambda表达式或方法引用来创建`Comparator`实例,使代码更加简洁。 3. 对于数组,使用`...

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

    Java中的`Arrays.sort()`和`Collections.sort()`是两个常用的排序函数,它们分别用于对数组和集合进行排序。这两个函数在内部实现上有所不同,但都基于高效的排序算法。 首先,`Collections.sort()`方法在处理列表...

    Java数组特点及基本使用技巧

    1. 对象数组排序:对象数组可以使用Arrays.sort()方法来排序。 2. 基本类型数组排序:基本类型数组也可以使用Arrays.sort()方法来排序。 Java数组是一种非常有用的数据结构,掌握数组的特点和基本使用技巧对Java...

    java从键盘输入 对象数组 数组对象成员排序

    通过这种方式,我们实现了从键盘输入对象数组,并根据对象的某个属性(如年龄)进行排序的功能。这对于学习Java面向对象编程和数据结构是非常有帮助的,不仅可以理解对象的创建与操作,还能了解数组和比较器的概念。...

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

    Arrays.sort()是Java中的一种排序算法,该方法可以对数组进行排序,具体来说,它可以对基本类型数组和对象数组进行排序。在本文中,我们将详细介绍Arrays.sort()的使用方法,包括简单示例、策略模式和“super”的...

    java 对象数组排序

    在这个场景下,我们将关注如何对对象数组进行排序,特别是使用`Arrays.sort()`方法。 首先,让我们深入理解`Arrays.sort()`在处理对象数组时的工作原理。`Arrays.sort()`默认适用于基本类型的数组,如`int[]`或`...

    Java实验-数组的定义、初始化方法 掌握数组的遍历方法 掌握Arryas类的使用

    * Arrays.sort()方法可以对数组进行排序,例如:Arrays.sort(数组); * Arrays.copyOf()方法可以复制数组,例如:Arrays.copyOf(源数组,长度); * Arrays.binarySearch()方法可以在数组中查找元素,例如:Arrays....

    对象数组练习题.doc

    该类包括一个数组属性Student[] ss = new Student[10];,用于存储多个学生对象。同时,StuManager类还包括多个方法,用于管理和处理学生信息。 知识点3:增加学生信息addStu()方法 addStu()方法用于增加新的学生...

    Java数组_附件.pdf

    * 数组的排序:Arrays.sort(arr); * 数组的搜索:Arrays.binarySearch(arr, target); Java 数组的优点包括: * 高效的存储和访问方式 * 方便的数组操作方式 * 广泛的应用场景 Java 数组的缺点包括: * 固定长度...

    java 数组递增排序

    这允许根据特定属性或逻辑对对象数组进行排序。 总的来说,了解和熟练掌握各种排序算法是每个Java程序员的基本功。在实际开发中,根据数据规模、数据特性以及性能需求,选择合适的排序方法是至关重要的。同时,Java...

    Comparable接口和Comparator使用示例

    在 main() 方法中,我们创建了一个 Simple 对象数组,并使用 Arrays.sort() 方法对其进行排序,排序时使用 CompareTest Comparator 对象。 Comparable 和 Comparator 的区别 Comparable 接口和 Comparator 都可以...

    数组2007.4.9

    Java的`Arrays.sort()`方法可以对数值类型数组进行排序,对于对象数组则需要提供比较器(Comparator)。 八、数组与集合的转换 Java的`ArrayList`类提供了从数组到列表和从列表到数组的转换方法,如`ArrayList...

    12道不错的数组例题

    如果数组未排序,先调用`Arrays.sort()`。 6. **数组复制与拷贝**: - `System.arraycopy()`方法用于复制数组的一部分或全部到另一个数组。 - `Arrays.copyOf()`和`Arrays.copyOfRange()`用于创建数组的副本,...

    08.【String类、static、Arrays类、Math类】.zip

    它可以用于排序数组(如`Arrays.sort()`),填充数组(`Arrays.fill()`),复制数组(`Arrays.copyOf()`)以及打印数组内容(`Arrays.toString()`)。这些方法极大地简化了对数组的操作,提高了代码的可读性和效率。...

    Java基础入门自学课件 第04章 数组(共25页).rar

    Java库中提供了对数组的一些操作方法,如`Arrays.sort()`用于排序数组,`Arrays.copyOf()`用于复制数组等。 六、数组与集合的区别 虽然Java集合框架提供了更灵活的数据结构,如ArrayList和LinkedList,但数组在性能...

    Java基础复习day03数组

    3. Arrays.sort(数组) 数组排序。 4. Arrays.binarySearch(数组, 目标值) 在有序数组中,查找目标值的位置下标。 5. Arrays.fill(数组, 值) 填满指定的值。 七、二维数组 二维数组是一种特殊的数组,用于存放数组...

    Java 实例 - 数组填充源代码-详细教程.zip

    2. `Arrays.sort()`:对数组进行排序。 七、集合与数组的转换 Java的集合框架如ArrayList、LinkedList等可以方便地与数组相互转换。`ArrayList.toArray()`方法可以把集合转换为数组,而`Arrays.asList()`则可将...

    java类排序,很实用

    这样,`Arrays.sort()` 就知道如何依据这些规则来排序数组。以下是如何实现 `Comparable&lt;T&gt;` 的示例: ```java public class Student implements Comparable&lt;Student&gt; { // 类的属性和方法... @Override ...

    java数组练习与学习

    - `Arrays.sort()`:对数组进行排序(仅适用于对象数组,对于基本类型需使用`java.util.Arrays.sort(int[])`)。 7. **数组与集合框架的区别**: 虽然数组和集合(如ArrayList、LinkedList等)都可以存储多个元素...

    Java实现类排序

    这两个方法都可以对基本类型和对象类型的数组或集合进行排序,但默认情况下,它们依赖于元素的自然顺序,即元素类型的`Comparable`接口实现。 首先,我们来理解什么是自然顺序。如果一个类的实例可以直接与其他实例...

Global site tag (gtag.js) - Google Analytics