`

练习题--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接口第一次接触,感觉很好。
分享到:
评论

相关推荐

    最小生成树(二维数组实现)

    在二维数组中,我们可以将每个节点看作数组的一个行或列,数组元素的值表示对应节点间边的权重。如果两个节点没有直接相连,权重可以设置为无穷大或者一个非常大的数来表示不可达。 在这个ACM习题中,你可能需要...

    一维数组题目8道题带答案

    在这个“一维数组题目8道题带答案”资源中,我们可以期待找到一系列与一维数组相关的练习题,旨在帮助学习者理解和熟练掌握在Unity C#环境中操作数组的技巧。 1. **数组的基本概念**: - 一维数组是线性数据结构,...

    Java数组练习题(带答案).doc

    5. 定义了`int`型二维数组`a[6][7]`后,`a[3][4]`前的数组元素个数为_A_,因为是6行7列,所以前3行4列是24个元素。 6. 正确的初始化字符数组的语句是_B_,因为A和C选项长度不匹配,D选项没有终止符。 7. 数组在...

    数组练习题Subject:数组

    这可以通过使用 Java 中的二维数组索引和赋值操作来实现。 8. 二维数组清零 二维数组清零是数组操作的一种常见需求。在 Subject08 中,我们需要定义一个 3 行 4 列的二维数组,逐个从键盘输入值,编写程序将四周的...

    Java数组练习题带答案.doc

    3. 正确的二维数组初始化语句是 B. int a[][]={{1,2},{3,4}};。 4. 数组下标可以是整型常量、整型变量或整型表达式。 5. 数组元素 a[3][4]前的数组元素个数为 24。 6. 正确的初始化字符数组的语句是 B. char str...

    Java数组定义与遍历练习题

    例如,`int[][] matrix = new int[3][4]`创建一个3行4列的二维数组。 4. **P4.java** - 可能是关于数组遍历的练习。使用for循环可以遍历数组的所有元素,如`for(int i=0; i; i++) { System.out.println(array[i]); ...

    java算法题 : 数组相关问题

    定义了一个3行4列的二维数组。 七、数组与链表、队列、栈等数据结构的关系 数组可以作为这些数据结构的基础实现,如用数组模拟链表、实现队列的FIFO(先进先出)和栈的LIFO(后进先出)特性。 通过学习和实践上述...

    JAVA开发实战经典_课后习题讲解-第4章:数组习题讲解.rar

    4. **多维数组**:理解二维数组的概念,用于表示矩阵或其他表格形式的数据。 5. **数组操作**:包括复制数组、合并数组、反转数组等,熟悉Java提供的Arrays类中的方法。 6. **异常处理**:当尝试访问超出数组范围的...

    Java练习题,实用于Java大部分人群

    - **知识点**:计算一个3×3二维数组主对角线元素的和。 - **实现方法**: - 使用双重循环访问二维数组中的每个元素。 - 只有当行下标等于列下标时才累加到总和中。 #### 30. 数组逆序 - **知识点**:将一个数组...

    java数组练习题目 (2).pdf

    - 数组元素计数:在二维数组中,元素数量可以通过行数乘以列数计算。 - 字符串初始化:字符串数组可以包含空字符'\0'。 - 存储位置:数组在Java中存储在堆中。 - 数组大小:数组长度在创建时确定,之后不能更改...

    leetcode二维数组-programming_exercises:leetcode、nowcoder刷题之路

    leetcode二维数组 编程练习 包含常见的编程网站的练习习题(leetcode、牛客等)----待完成中... 也同时包含复习面试的编程练习 该src/main/java目录下,以文件夹命名,表示的是不同的来源 每个文件均可单独运行 其他...

    数组测试题

    - 二维数组可视为数组的数组,常用于处理表格数据。 - 多维数组的索引通常是嵌套的,如`arr[i][j]`表示第i行第j列的元素。 8. **数组的优化**: - 使用动态规划和空间优化技术,如数组下标映射,减少不必要的...

    Java_数组练习答案 (2).pdf

    3. 二维数组初始化:选项C是错误的,因为二维数组的列数必须在声明时指定。 4. 数组下标:数组下标可以是常量、变量或表达式,选项D正确。 5. 二维数组元素个数:在a[6][7]的二维数组中,a[3][4]前的元素个数是25。 ...

    数组练习题Subject:数组答案源代码

    在Java中,有多种类型的数组,包括一维数组、二维数组和多维数组。一维数组是最简单的形式,类似于线性列表,可以理解为单一列的数据结构。二维数组可以看作是由一维数组组成的矩阵,而多维数组则扩展了这一概念,...

    Java数组练习题.pdf

    `(二维数组的列数应一致)。 13. **引用数组元素**:数组下标可以是整型常量、整型变量或整型表达式。 14. **异常处理**:访问无效的数组下标会抛出`ArrayIndexOutOfBoundsException`异常。 15. **arraycopy()...

    Java数组练习题.docx

    15. **二维数组元素计数**:定义了`int`型二维数组`a[6][7]`后,`a[3][4]`前的数组元素个数为`(6-1) * 7 + (4-1) = 24`。 16. **字符数组初始化**:正确的初始化如B. `char str[]={'h','e','l','l','o','\0'}`,...

Global site tag (gtag.js) - Google Analytics