新手求助,代码一些看不懂

ajaxyt 2014-12-27 11:19:52

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

class Dog{
int size;
public Dog(int s){
size = s;
}
}

class DogSizeComparator implements Comparator<Dog>{

@Override
public int compare(Dog o1, Dog o2) {
return o1.size - o2.size;
}
}

public class ArraySort {

public static void main(String[] args) {
Dog d1 = new Dog(2);
Dog d2 = new Dog(1);
Dog d3 = new Dog(3);

Dog[] dogArray = {d1, d2, d3};
printDogs(dogArray);

Arrays.sort(dogArray, new DogSizeComparator()); //请问这一句new DogSizeComparator()写在这里是什么意思?
//为什么会输出1 2 3。请问是怎么算的?
printDogs(dogArray);
}

public static void printDogs(Dog[] dogs){
for(Dog d: dogs)
System.out.print(d.size + " " );

System.out.println();
}
}


输出
2 1 3
1 2 3 //为什么会输出1 2 3。请问是怎么算的?
...全文
199 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
程序员龙湫 2014-12-28
  • 打赏
  • 举报
回复
eclipce F3 看看源码有好处~
shixitong 2014-12-27
  • 打赏
  • 举报
回复
这个是源码,看下就明白了,你实现了Comparator<Dog>接口
private static void mergeSort(Object[] src,
				  Object[] dest,
				  int low, int high, int off,
				  Comparator c) {
	int length = high - low;

	// Insertion sort on smallest arrays
	if (length < INSERTIONSORT_THRESHOLD) {
	    for (int i=low; i<high; i++)
		for (int j=i; j>low && c.compare(dest[j-1], dest[j])>0; j--)
		    swap(dest, j, j-1);
	    return;
	}
小北__ 2014-12-27
  • 打赏
  • 举报
回复
实现了Comparator接口,就可以进行 Arrays.sort 排序了,给你看下源码把

  public static <T> void sort(T[] a, Comparator<? super T> c) {
	T[] aux = (T[])a.clone();
        if (c==null)
            mergeSort(aux, a, 0, a.length, 0);
        else
            mergeSort(aux, a, 0, a.length, 0, c);
    }

private static void mergeSort(Object[] src,
				  Object[] dest,
				  int low,
				  int high,
				  int off) {
	int length = high - low;

	// Insertion sort on smallest arrays
        if (length < INSERTIONSORT_THRESHOLD) {
            for (int i=low; i<high; i++)
                for (int j=i; j>low &&
			 ((Comparable) dest[j-1]).compareTo(dest[j])>0; j--)
                    swap(dest, j, j-1);
            return;
        }
就是一个比较排序

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧