今天在做一个按更新时间搜寻出某个文件夹里面的所有文件,由于自己写算法比较花费时间,干脆就用j2se提供的类Arrays提供的sort()方法,这样就比较省力。对于基本数据类型只要Arrays.sort(数组)[“注:数组是声明为基本数据类型的数组,如int[]等”]对于对象类型,要 implement Comparable,所以得重载 compareTo() 这个方法。有了这个方法,那么 Arrays.sort() 就能依照这个方法的回传值来作排序的依据。事实上,基本数据类型也都有 implement Comparable 的,所以才能够这样子使用。一般而言,我们习惯的排序结果是由小到大,所以在 compareTo() 当中「大于」是回传正值,如果你希望得到的结果是由大到小,那么只要 return 的部分改一下,也就可以了。不过不建议这样子作,会降低程序可读性;况且,只要把数组逆向 traversal 不就得到一样的结果啦...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]+",");}// 调用数组的静态排序方法sortArrays.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("排序后:");// 调用数组的静态排序方法sortArrays.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;elsereturn 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]
详细解决方案
Arrays.sort()使用方法
热度:64 发布时间:2023-12-08 00:08:43.0
相关解决方案
- Arrays.binarySearch(Aa, 五);是什么意思.
- Radmin Viewer 3.0 使用方法,该如何处理
- Golbal.asax 使用方法,该怎么解决
- 用的aspnetpager分页存储过程,20000行,速度慢?而且无法 Sort?该如何解决
- connections.sort 步骤使用
- 犀牛书札记:(9)Objects and Arrays
- javascript attachEvent跟addEventListener 使用方法
- myArrray.sort(function(a,b){return a-b})是什么解决办法
- 请javascript高手解决一下这个array.sort 的有关问题
- Collections.sort 排序有关问题
- 有关泛型以及collections.sort()方法的有关问题
- jquery 的 sort 函数有关问题
- 请教org.springframework.data.domain.Sort,这个类要引用哪些包
- Array.sort()排序有关问题
- 怎样用Arrays.sort()函数排序一个类对象数组。该如何解决
- 【JAVA】求教!Arrays.asList()方法在这个程序中是如何运行的
- oracle 11g express 使用方法,该怎么解决
- c++ stl 中sort 和 java中 Arrays.sort()分别使用什么算法实现的,该如何解决
- Arrays.sort(arryOfInts);用解决方案
- 双重循环 和 Arrays.sort()+Arrays.binarySearch() 哪种方式效率高?解决方法
- 怎么实现类似于C里的int sort(int a[])的数组排序
- Arrays.toString()无法使用解决思路
- 研究java源代码:对于Arrays.sort
- qr code 使用方法。请,并提供操作事例
- OpenGL ES 3.0之VertexAttributes,Vertex Arrays,and Buffer Objects(9)
- Cannot sort a row of size 8096, which is greater than the allowable maximum of 8094.解决方案
- android 的listview 使用方法。调整了checkbox
- 快速排序(quick sort)
- 直接插入排序 (Straight Insertion Sort)
- 《Pro Oracle SQL》Chapter 三 - 3.3.2 Sort-Merge Joins