zoukankan      html  css  js  c++  java
  • 二维数组排序

    二维数组排序实例:

    import java.util.*;
    public class TwoDimArrayTest {
    public static void main(String[] args) {
    String[][] arr = {{"B","Z","K"},
    {"C","X","L"},
    {"A","Y","M"}} ;
    //缺省(按0列升序)
    Arrays.sort(arr, new TwoDimArrayComparator());
    printArray(arr);
    //按0列降序
    Arrays.sort(arr, new TwoDimArrayComparator(0,-1));
    printArray(arr);
    //按1列升序
    Arrays.sort(arr, new TwoDimArrayComparator(1));
    printArray(arr);
    //按1列降序
    Arrays.sort(arr, new TwoDimArrayComparator(1,-1));
    printArray(arr);
    //按2列升序
    Arrays.sort(arr, new TwoDimArrayComparator(2));
    printArray(arr);
    //按2列降序
    Arrays.sort(arr, new TwoDimArrayComparator(2,-1));
    printArray(arr);
    }
    public static void printArray(String[][] arr) {
    for (int i= 0; i< arr.length ; i++) {
    for (int j = 0; j < arr[i].length; j++) {
    System.out.print(arr[i][j] +"\t");
    }
    System.out.println();
    }
    System.out.println("======================");
    }
    }
    
    class TwoDimArrayComparator implements Comparator{
    private int keyColumn = 0;
    private int sortOrder = 1;
    public TwoDimArrayComparator () {}
    public TwoDimArrayComparator (int keyColumn) {
    this.keyColumn = keyColumn;
    }
    public TwoDimArrayComparator (int keyColumn,int sortOrder) {
    this.keyColumn = keyColumn;
    this.sortOrder = sortOrder;
    }
    public int compare(Object a, Object b) {
    if (a instanceof String[]) {
    return sortOrder * ((String[])a)[keyColumn].compareTo(((String[])b)[keyColumn]);
    } else if (a instanceof int[]){
    return sortOrder * (((int[])a)[keyColumn] - ((int[])b)[keyColumn]);
    } else {
    return 0;
    }
    }
    }

    运行结果:

    C:\java>java TwoDimArrayTest
    A Y M
    B Z K
    C X L
    ======================
    C X L
    B Z K
    A Y M
    ======================
    C X L
    A Y M
    B Z K
    ======================
    B Z K
    A Y M
    C X L
    ======================
    B Z K
    C X L
    A Y M
    ======================
    A Y M
    C X L
    B Z K
    ======================

  • 相关阅读:
    sql server 中having 的使用注意事项
    js截取字符串
    .net截取字符串
    序列化二叉树
    把二叉树打印成多行
    35 拷贝赋值函数、虚函数
    34 char类型转换为int类型
    33 单/双精度有效数字、程序运行过程
    32 C++常见错误集锦
    31 位域、空类的sizeof值
  • 原文地址:https://www.cnblogs.com/kentyshang/p/805334.html
Copyright © 2011-2022 走看看