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

Posted on 2007-10-19 10:28 久城 阅读(4365) 评论(1)  编辑  收藏 所属分类: JavaTest

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

参照: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接口第一次接触,感觉很好。

欢迎来访!^.^!
本BLOG仅用于个人学习交流!
目的在于记录个人成长.
所有文字均属于个人理解.
如有错误,望多多指教!不胜感激!

Feedback

# re: 练习题--JAVA实现二维数组对列排序  回复  更多评论   

2007-10-21 17:07 by 静儿
我来将你的摘要翻译成日语,呵呵。
朝、会社へ来た道に、もと緑な草が今白っぽくて目の前に現れていた。(早晨,来公司的路上,原本绿色的小草却在我眼前呈现出白意。)木の葉が黄色になった、まるで瞬時に。(似乎在一瞬间,树的叶子都变成黄色。)秋の匂いがした、私のその感じをはっきりそそられる。(秋的气息是对我那样的清晰)。
是不是和你的原文有很大出入?呵呵,顺便说一句:好羡慕你们学web的,可以把页子设计的那么漂亮。我呀,学的东西太少太浅的缘故。用ps做图片了,设计网页什么的,总是无法把心里想表达的东西表现出来。天天开心。

只有注册用户登录后才能发表评论。


网站导航:
 

Copyright © 久城