练习题--JAVA实现二维数组对列排序

早上来公司的路上,路边一片绿油油的小草上都披上了一身白霜。树叶突然间变黄了,我终于完全的感觉到了,秋的气息。

参照:http://www.blogjava.net/realsmy/archive/2007/10/17/153435.html,继续这个问题,用JAVA实现对二维数组的排序。顺便学习了一下Comparable接口。

/** */ /**
 *   Class Name  : YW2_Test02.java
 *   Purpose     : 对二维数组按列排序
 *
 *   
@author realsmy
 *   
@since 2007/10/19
 *
 *   Copyright realsmy. All rights reserved.
 
*/

package  com.neusoft.test;

import  java.util. * ;

public   class  YW5_Test02  {
    
private int ary[][];
    
private MySort mySort;
    
// 数据初始化
    public YW5_Test02(int ary[][], MySort mySort) {
        
this.ary = ary;
        
this.mySort = mySort;
    }

    
// 排序
    public void sort() {
        Arrays.sort(ary, mySort);
        printArray();
    }

    
// 打印
    private void printArray() {
        System.out.println(
"---------Begin---------");
        
for (int[] a : ary) {
            
for (int i : a)
                System.out.print(i 
+ " ");
            System.out.println();
        }

        System.out.println(
"---------End---------");
    }

    
    
public static void main(String[] arg) throws Exception {
        
//int ary[][] = { {1,5,456,6,89}, {2,51,515,32,15}, {3,45,68,24,6}, {4,822,4,88,462}, {5,87,44,865,99}};
        int ary[][] = RandomArray.GetArray(45);
        
new YW5_Test02(ary, new MySort(0,"asc")).sort();
        
new YW5_Test02(ary, new MySort(1,"asc")).sort();
        
new YW5_Test02(ary, new MySort(2,"desc")).sort();
        
new YW5_Test02(ary, new MySort(3,"asc")).sort();
        
new YW5_Test02(ary, new MySort(4,"desc")).sort();

    }

}


class  MySort  implements  Comparator < int [] >   {
    
// 想要进行排序的列数
    private int columnNumber;
    
// 排序方式:desc or asc
    private String order;

    
public MySort(int columnNumber, String order) {
        
this.columnNumber = columnNumber;
        
this.order = order;
    }


    
public int compare(int a[], int b[]) {
        
if ("desc".equals(order)) {
            
return b[columnNumber] - a[columnNumber];
        }
 else {
            
return a[columnNumber] - b[columnNumber];
        }
 

    }

}


class  RandomArray {
    
// 随机生成二维数组
    public static int[][] GetArray(int row, int column) {
        Random random 
= new Random();
        
int i, j;
        
int[][] array;
        
if ((row > 0&& (column > 0))
            array 
= new int[row][column];
        
else
            array 
= new int[1][1];
        
for (i = 0; i < array.length; i++)
            
for (j = 0; j < array[i].length; j++{
                array[i][j] 
= random.nextInt(100);
            }

        
return array;
    }

}

Comparable接口第一次接触,感觉很好。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值