早上来公司的路上,路边一片绿油油的小草上都披上了一身白霜。树叶突然间变黄了,我终于完全的感觉到了,秋的气息。
参照: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(4, 5);
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道题带答案”资源中,我们可以期待找到一系列与一维数组相关的练习题,旨在帮助学习者理解和熟练掌握在Unity C#环境中操作数组的技巧。 1. **数组的基本概念**: - 一维数组是线性数据结构,...
5. 定义了`int`型二维数组`a[6][7]`后,`a[3][4]`前的数组元素个数为_A_,因为是6行7列,所以前3行4列是24个元素。 6. 正确的初始化字符数组的语句是_B_,因为A和C选项长度不匹配,D选项没有终止符。 7. 数组在...
这可以通过使用 Java 中的二维数组索引和赋值操作来实现。 8. 二维数组清零 二维数组清零是数组操作的一种常见需求。在 Subject08 中,我们需要定义一个 3 行 4 列的二维数组,逐个从键盘输入值,编写程序将四周的...
3. 正确的二维数组初始化语句是 B. int a[][]={{1,2},{3,4}};。 4. 数组下标可以是整型常量、整型变量或整型表达式。 5. 数组元素 a[3][4]前的数组元素个数为 24。 6. 正确的初始化字符数组的语句是 B. char str...
例如,`int[][] matrix = new int[3][4]`创建一个3行4列的二维数组。 4. **P4.java** - 可能是关于数组遍历的练习。使用for循环可以遍历数组的所有元素,如`for(int i=0; i; i++) { System.out.println(array[i]); ...
定义了一个3行4列的二维数组。 七、数组与链表、队列、栈等数据结构的关系 数组可以作为这些数据结构的基础实现,如用数组模拟链表、实现队列的FIFO(先进先出)和栈的LIFO(后进先出)特性。 通过学习和实践上述...
4. **多维数组**:理解二维数组的概念,用于表示矩阵或其他表格形式的数据。 5. **数组操作**:包括复制数组、合并数组、反转数组等,熟悉Java提供的Arrays类中的方法。 6. **异常处理**:当尝试访问超出数组范围的...
- **知识点**:计算一个3×3二维数组主对角线元素的和。 - **实现方法**: - 使用双重循环访问二维数组中的每个元素。 - 只有当行下标等于列下标时才累加到总和中。 #### 30. 数组逆序 - **知识点**:将一个数组...
- 数组元素计数:在二维数组中,元素数量可以通过行数乘以列数计算。 - 字符串初始化:字符串数组可以包含空字符'\0'。 - 存储位置:数组在Java中存储在堆中。 - 数组大小:数组长度在创建时确定,之后不能更改...
leetcode二维数组 编程练习 包含常见的编程网站的练习习题(leetcode、牛客等)----待完成中... 也同时包含复习面试的编程练习 该src/main/java目录下,以文件夹命名,表示的是不同的来源 每个文件均可单独运行 其他...
- 二维数组可视为数组的数组,常用于处理表格数据。 - 多维数组的索引通常是嵌套的,如`arr[i][j]`表示第i行第j列的元素。 8. **数组的优化**: - 使用动态规划和空间优化技术,如数组下标映射,减少不必要的...
3. 二维数组初始化:选项C是错误的,因为二维数组的列数必须在声明时指定。 4. 数组下标:数组下标可以是常量、变量或表达式,选项D正确。 5. 二维数组元素个数:在a[6][7]的二维数组中,a[3][4]前的元素个数是25。 ...
在Java中,有多种类型的数组,包括一维数组、二维数组和多维数组。一维数组是最简单的形式,类似于线性列表,可以理解为单一列的数据结构。二维数组可以看作是由一维数组组成的矩阵,而多维数组则扩展了这一概念,...
`(二维数组的列数应一致)。 13. **引用数组元素**:数组下标可以是整型常量、整型变量或整型表达式。 14. **异常处理**:访问无效的数组下标会抛出`ArrayIndexOutOfBoundsException`异常。 15. **arraycopy()...
15. **二维数组元素计数**:定义了`int`型二维数组`a[6][7]`后,`a[3][4]`前的数组元素个数为`(6-1) * 7 + (4-1) = 24`。 16. **字符数组初始化**:正确的初始化如B. `char str[]={'h','e','l','l','o','\0'}`,...