在java中Arrays.sort是用来排序的,但是他可不可以用来比较两个对象的大小。怎么用Arrays.sort
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在java中Arrays.sort是用来排序的,但是他可不可以用来比较两个对象的大小。怎么用Arrays.sort相关的知识,希望对你有一定的参考价值。
Arrays.sort是用的快带排序的算法。由于比较的是对象,因此比较规则必须实现Comparator接口,这个接口本身就是用于进行比较的。所以这个静态方法可以用来比较两个对象的大小。但是比较规则要重写compare方法中实现。如规则类为ByCompare,无素类为Element,则用法如下:
Arrays.sort(Elements, new ByCompare()); //其中Elements为数组。
具体方法使用可问度娘。 参考技术A 可以,但是都是局限于相同类型的对象,arrays.sort的方法是排序的,这个方法的排序是基于数组的排序,只要是一个类型的数组都可以排序,当然泛型的也可以。 参考技术B import java.util.Arrays;
public class Test
public static void main(String[] args)
int[] array = new int[20];
// 随机初始化一个20个元素的数组
for (int i = 0; i < array.length; i++)
array[i] = (int) (Math.random() * 100);
// 打印数组的值
System.out.println(Arrays.toString(array));
// 排序
Arrays.sort(array);
// 打印数组排序后的的值
System.out.println(Arrays.toString(array));
// 以上是对基本类型的操作,及排序的用法。如果要比较大小,基本类型直接用大于> 小于< 等于=就行了。
// 这里再给你演示一下,对象类型的操作,同样的,用Integer
Integer[] arrayInt = new Integer[20];
// 随机初始化一个20个元素的数组
for (int i = 0; i < arrayInt.length; i++)
arrayInt[i] = (int) (Math.random() * 100);
// 打印数组的值
System.out.println(Arrays.toString(array));
// 排序
Arrays.sort(array);
// 打印数组排序后的的值
System.out.println(Arrays.toString(array));
// 对于对象类型,要比较大小,需要继承
// java.lang.Comparable接口,实现compareTo方法,Integer是已经实现了的,要比较大小可以如下;
Integer a = new Integer(10);
Integer b = new Integer(20);
System.out.println("a和b的比较结果为:" + a.compareTo(b) + ",小于0,说明a小于b"); // a.compareTo(b)如果返回小于0,则表示a小于b,如果=0,则表示两者相等,如果大于0,则表示a大于b
本回答被提问者采纳 参考技术C import java.util.Arrays;
class A implements Comparable<A>
String a;
public A(String a)
this.a = a;
public int compareTo(A o)
int i = this.a.length() - o.a.length();
if(i!=0)
return i;
return this.a.compareTo(o.a); //因为this.a是String 类型 已经实现Comparable接口 故可调用
public class Test3
public static void main(String[] args)
A[] a = new A("bb"),new A("aa"),new A("abcd");
Arrays.sort(a);
for(A i:a)
System.out.println(i.a);
如楼上所说 这是我自己写得一个示例代码 参考技术D 如果想让Arrays.sort()给除了基本类型的数据来排序的话 要排序的对象必须实现Comparable接口才能排序 排序的规则是按照Comparable里的compareTo方法定义的当然compareTo是需要你自己去写的
39-java中Arrays.sort 和 collections.sort()总结
总结一下java 中的两种排序工具:
Arrays.sort() : 主要针对 数组类型排序,如果数组里面的元素是对象,要按对象属性排序的话,需要重写 Comparator() 函数,重写里面的 int compare()函数;
Collections.sort(): 主要是针对集合排序,如:list。 当然如果数组 array[i] 的每项是一个list 也可以直接用。与Arrays.sort()一样,重写 Comparator()函数。
注意:两种方式重写的函数方式是一样的,单词不要写错哟: Comparator,compare
import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; import java.util.Comparator; import java.util.List; public class Main1 { public static void main(String[] args) { man[] mans = new man[3]; mans[0] = new man(1); mans[1] = new man(24); mans[2] = new man(5); Comparator<man> cmp = new My_Comparator (); //对象数组排序: Arrays.sort(mans, cmp); for(man i : mans) { System.out.print(i.a + ", "); } System.out.println("---------"); //对象链表排序: List<man> list = new ArrayList<>(); list.add(new man(3)); list.add(new man(2)); list.add(new man(1)); // Collections.sort(list, new Comparator<man>() { // public int compare(man x, man y) { // return y.a - x.a; // } // }); // 将上面的简化为下面的: Collections.sort(list, cmp); for(man i : list) { System.out.print(i.a + "; "); } } } class My_Comparator implements Comparator<man>{ @Override public int compare(man o1, man o2) { return o2.a - o1.a; } } class man{ public int a; man(int x){ this.a = x; } }
以上是关于在java中Arrays.sort是用来排序的,但是他可不可以用来比较两个对象的大小。怎么用Arrays.sort的主要内容,如果未能解决你的问题,请参考以下文章
java中排序函数sort()使用,Arrays.sort()和Collections.sort()