在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操作数组

java中排序函数sort()使用,Arrays.sort()和Collections.sort()

使用 Arrays 类操作 Java 中的数组

39-java中Arrays.sort 和 collections.sort()总结

java中如何指定sort的排序方法

java中如何使用arrays.sort()对二维数组排序?