Java에서 2D 배열 정렬

Rupam Yadav 2023년10월12일
  1. java.util.Arrays.sort(T[] a, Comparator<? super T> c)를 사용하여 현명한 열로 2D 배열 정렬
  2. java.util.Arrays.sort(T[] a)를 사용하여 2D 배열 행 단위 정렬
Java에서 2D 배열 정렬

이 튜토리얼에서는 Java에서 2D 배열을 정렬하는 방법을 배웁니다. 2D 배열은 요소가 1D 배열 인 배열입니다. 2D 배열의 요소는 행렬 형태로 행과 열로 배열됩니다.

java.util.Arrays.sort(T[] a, Comparator<? super T> c)를 사용하여 현명한 열로 2D 배열 정렬

java.util.Arrays.sort(T[] a, Comparator<? super T> c)Arrays 클래스에서 제공하는 몇 안되는 유틸리티 메소드 중 하나입니다. 이 메서드는 지정된 비교기에 의해 작동되는 순서에 따라 지정된 배열을 정렬합니다. 배열의 요소는 상호 비교 가능해야하므로ClassCastException을 발생시키지 않아야합니다.

여기서 multi는 3 개의 행과 3 개의 열이있는 행렬 형태의 2 차원 배열입니다. 세 번째 열을 참조로 사용하여이 배열을 정렬합니다.

java.util.Comparator 인터페이스의 구현을Arrays.sort()메소드에 전달합니다. Comparator 인터페이스는 순서를 위해 두 인수를 비교하는compare 메소드를 정의합니다. 전달 된 객체가 같으면 0을 반환합니다. first[columnNumber-1]second[columnNumber-1]보다 크면 양수 값을 반환합니다. 그렇지 않으면 음수 값을 반환합니다.

multi의 세 번째 열에는 요소로 8, 2, 6이 있습니다. 이 값을 비교하고 2D 배열의 순서를 오름차순으로 변경합니다.

import java.util.Arrays;
import java.util.Comparator;

public class Sort2DArray {
  public static void main(String args[]) {
    int[][] multi = new int[][] {
        {4, 9, 8},
        {7, 5, 2},
        {3, 0, 6},

    };
    for (int i = 0; i < multi.length; i++) {
      for (int j = 0; j < multi[i].length; j++) System.out.print(multi[i][j] + " ");
      System.out.println();
    }
    // sort according to 3 column
    Sort2DArrayBasedOnColumnNumber(multi, 3);
    System.out.println("after sorting");
    for (int i = 0; i < multi.length; i++) {
      for (int j = 0; j < multi[i].length; j++) System.out.print(multi[i][j] + " ");
      System.out.println();
    }
  }
  public static void Sort2DArrayBasedOnColumnNumber(int[][] array, final int columnNumber) {
    Arrays.sort(array, new Comparator<int[]>() {
      @Override
      public int compare(int[] first, int[] second) {
        if (first[columnNumber - 1] > second[columnNumber - 1])
          return 1;
        else
          return -1;
      }
    });
  }
}

출력:

4 9 8 
7 5 2 
3 0 6 
after sorting
7 5 2 
3 0 6 
4 9 8 

java.util.Arrays.sort(T[] a)를 사용하여 2D 배열 행 단위 정렬

여기 코드에서array[][]는 2D 배열입니다. 4 개의 행과 4 개의 열이 있습니다. 배열을 인수로 취하는Arrays.sort()메소드를 사용하여이 배열의 개별 행을 정렬합니다. 이 메서드는 지정된 배열을 오름차순으로 정렬합니다.

sortRowWise 메소드는 배열 길이까지for 루프를 실행합니다. array[][]의 개별 행을 가져 와서 출력에 표시된대로 오름차순으로 정렬합니다.

import java.util.Arrays;
public class Sort2DArray {
  public static void main(String args[]) {
    int array[][] = {{7, 8, 2, 1}, {0, 3, 2, 9}, {6, 5, 3, 2}, {8, 3, 7, 9}};

    sortRowWise(array);
  }

  static int sortRowWise(int arr[][]) {
    // One by one sort individual rows.
    for (int i = 0; i < arr.length; i++) {
      Arrays.sort(arr[i]);
    }

    for (int i = 0; i < arr.length; i++) {
      for (int j = 0; j < arr[i].length; j++) System.out.print(arr[i][j] + " ");
      System.out.println();
    }

    return 0;
  }
}

출력:

1 2 7 8
0 2 3 9
2 3 5 6
3 7 8 9
작가: Rupam Yadav
Rupam Yadav avatar Rupam Yadav avatar

Rupam Saini is an android developer, who also works sometimes as a web developer., He likes to read books and write about various things.

LinkedIn

관련 문장 - Java Array