博客
关于我
Java中二维数组按字典排序(即,按第一列排序)
阅读量:703 次
发布时间:2019-03-21

本文共 2551 字,大约阅读时间需要 8 分钟。

在Java编程中,对二维数组进行排序时,如果需要按照特定列来排序,可以直接使用Arrays.sort()方法并传递自定义的比较器。这将使代码更加简洁高效。

以下是关于如何按照不同列排序二维数组的详细指南:

按列排序通过自定义比较器实现

在Java中,可以通过自定义比较器将二维数组按照指定列排序。以下是一个示例:

import java.util.Arrays;import java.util.Comparator;import java.util.Scanner;public class T_17 {	public static void main(String[] args) {		Scanner sc = new Scanner(System.in);		int n = sc.nextInt();		int[][] a = new int[n][3];		for (int i = 0; i < n; i++) {			a[i][0] = sc.nextInt();			a[i][1] = sc.nextInt();			a[i][2] = sc.nextInt();		}		// 按第一列排序		Arrays.sort(a, new Comparator
() { public int compare(int[] e1, int[] e2) { return Integer.compare(e1[0], e2[0]); } }); // 按第二列排序 Arrays.sort(a, new Comparator
() { public int compare(int[] e1, int[] e2) { return Integer.compare(e1[1], e2[1]); } }); // 按第三列排序 Arrays.sort(a, new Comparator
() { public int compare(int[] e1, int[] e2) { return Integer.compare(e1[2], e2[2]); } }); // 如果需要降序排序,可以通过比较符号调整 Arrays.sort(a, new Comparator
() { public int compare(int[] e1, int[] e2) { return Integer.compare(e2[0], e1[0]); } }); for (int i = 0; i < n; i++) { System.out.println(a[i][0] + " " + a[i][1] + " " + a[i][2]); } }}

关于排序方式的解释

  • 自然排序:上述代码展示了如何按不同列进行排序。第一个Arrays.sort()方法是按第一列升序排序,第二个是按第二列升序排序,第三个是按第三列升序排序。

  • 降序排序:如果需要按相反的排序顺序(降序),可以在比较方法中调换Integer.compare()的参数,例如:

  • Arrays.sort(a, new Comparator
    () { public int compare(int[] e1, int[] e2) { return Integer.compare(e2[0], e1[0]); }});

    这种方法简单且高效,能够满足大多数实际需求。

    替代方案:转换为字符串数组

    除了使用自定义比较器,你也可以通过将二维数组转换为字符串数组来排序。这种方法虽然略微麻烦,但在某些特定场景下可能更有用。

    转换为字符串数组的步骤:

  • 定义一个辅助方法,将二维数组转换为字符串数组:
  • public static String[][] intArrayToStringArray(int[][] array) {	String[][] result = new String[array.length][];	for (int i = 0; i < array.length; i++) {		result[i] = IRSUtils.arrayToString(array[i]);	}	return result;}
    1. 实现arrayToString方法:
    2. private static String arrayToString(int[] array) {	return Arrays.toString(array);}
      1. 进行排序:
      2. String[][] primaryStage = intArrayToStringArray(a);Arrays.sort(primedStage);String[][] sortedArray = intArrayToStringArray(primedStage);
        1. 将排序后的字符串数组转换回整数数组:
        2. int[][] sortedIntArray = new int[sortedArray.length][];for (int i = 0; i < sortedArray.length; i++) {	String[] values = sortedArray[i];	sortedIntArray[i][0] = Integer.parseInt(values[0]);	sortedIntArray[i][1] = Integer.parseInt(values[1]);	sortedIntArray[i][2] = Integer.parseInt(values[2]);}

          这种方法虽然可行,但比直接使用自定义比较器要复杂许多,代码量也更大。

          总结

          在Java中,选择何种排序方法取决于具体需求。如果你希望代码简洁且高效,建议直接使用自定义比较器来对二维数组按照指定列排序。如果需要额外的灵活性,可以考虑通过转换到字符串数组的方式,但要权衡代码复杂度。

    转载地址:http://edtez.baihongyu.com/

    你可能感兴趣的文章
    Postman被低估的功能 — 自动化接口测试
    查看>>
    Postman轻松签名,让SHA256withRSA保驾护航
    查看>>
    Postman还能做Mock?又学了一招!
    查看>>
    Postman还能做Mock?又学了一招!
    查看>>
    postman进行http接口测试
    查看>>
    Postman高阶技能:Collection集合批量运行!
    查看>>
    postMessage跨标签页共享数据
    查看>>
    QImage对一般图像的处理
    查看>>
    post为什么会发送两次请求?
    查看>>
    Post表单提交TextArea的值出现转译乱码问题 - Spring MVC处理表单提交
    查看>>
    Power BI 中的 Python 可视化需要什么设置?任何特定的 matplotlib 包版本或系统设置?
    查看>>
    Power BI:如何在 Power Query 编辑器中将 Python 与多个表一起使用?
    查看>>
    power english (3) main text -emotion mastery - focus
    查看>>
    POWER ENGLISH (6) - MODEL
    查看>>
    power english (1) —— passion
    查看>>
    Power English (1) 原文
    查看>>
    power English (3)原文
    查看>>
    POWER ENGLISH(7)- repetition
    查看>>
    SpringBoot中集成SpringBatch详细解析与实战示例(CSV文件读取十万条数据进行业务处理后写入Mysql数据库)
    查看>>
    powerbi 一张表在另外一张表中出现的数量_PowerBi之初步学习笔记
    查看>>