배열에 들어 있는 값을 정렬하기 위해서는 소팅 로직을 작성합니다.
이를 자바에서 제공하는 Collections객체의 sort()함수를 이용하여 데이터를 정렬해 보겠습니다.
1차원 배열
1차원 배열을 정렬합니다.
■ SOURCE
private static void sortBasic() {
ArrayList<String> arrData = new ArrayList<String>();
arrData.add( "F" ); arrData.add( "B" ); arrData.add( "C" ); arrData.add( "A" ); arrData.add( "Z" );
System.out.println( "정렬 전 : " + arrData );
Collections.sort( arrData );
System.out.println( "정렬 후 : " + arrData );
}
소스가 워낙 간단해서 따로 설명할게 없는 것 같습니다.
Collections.sort()의 인자 값으로 1차원배열 데이터를 넣어주면 됩니다.
■ RESULT
정렬 전 : [F, B, C, A, Z] 정렬 후 : [A, B, C, F, Z] |
2차원 배열
이번에는 2차원 배열의 Data를 정렬해 보도록 하겠습니다.
2차원 배열의 경우, Key를 만들고 Key값으로 정렬을 해야 합니다.
하고보니... 정렬 로직짜는 것과 뭔 차인가 싶기도 하네요.
■ SOURCE
private static void sortArr2() {
ArrayList<ArrayList<String>> arr2Data = getArr2Data();
System.out.println( "정렬 전 :" );
for( int i = 0; i < arr2Data.size(); i++ ) System.out.println( arr2Data.get( i ) );
// 정렬할 key를 지정한다.
// 에문에서는 첫번째 열의 데이터를 Key로 설정하여 정렬한다.
ArrayList<ArrayList<String>> arr2Result = new ArrayList<ArrayList<String>>(); // 정렬한 결과
// Key에 해당하는 Data를 추출하고, 정렬한다.
ArrayList<String> arrSortKey = new ArrayList<String>();
for( int i = 0; i < arr2Data.size(); i++ ) arrSortKey.add( arr2Data.get( i ).get( 0 ) );
Collections.sort( arrSortKey );
// 정렬된 Key정보를 이용하여 데이터를 추출/적재한다.
for( int i = 0; i < arrSortKey.size(); i++ ) {
for( int k = 0; k < arr2Data.size(); k++ ) {
if( arrSortKey.get( i ).equals( arr2Data.get( k ).get( 0 ) ) ) {
ArrayList<String> arrResult = arr2Data.get( k );
arr2Result.add( arrResult );
break;
}
}
}
System.out.println( "정렬 후 :" );
for( int i = 0; i < arr2Result.size(); i++ ) System.out.println( arr2Result.get( i ) );
}
// 2차원배열 Sample-data
private static ArrayList<ArrayList<String>> getArr2Data() {
ArrayList<ArrayList<String>> arr2Data = new ArrayList<ArrayList<String>>();
ArrayList<String> arrData = new ArrayList<String>();
arrData.add( "F1" ); arrData.add( "F2" ); arrData.add( "F3" ); arr2Data.add( arrData );
arrData = new ArrayList<String>();
arrData.add( "B1" ); arrData.add( "B2" ); arrData.add( "B3" ); arr2Data.add( arrData );
arrData = new ArrayList<String>();
arrData.add( "C1" ); arrData.add( "C2" ); arrData.add( "C3" ); arr2Data.add( arrData );
arrData = new ArrayList<String>();
arrData.add( "A1" ); arrData.add( "A2" ); arrData.add( "A3" ); arr2Data.add( arrData );
arrData = new ArrayList<String>();
arrData.add( "Z1" ); arrData.add( "Z2" ); arrData.add( "Z3" ); arr2Data.add( arrData );
return arr2Data;
}
2차원배열은 바로 정렬이 되지 않기 때문에, 정렬할 Key를 ArrayList로 만들어서 처리해야 합니다.
// Key에 해당하는 Data를 추출하고, 정렬한다.
ArrayList<String> arrSortKey = new ArrayList<String>();
for( int i = 0; i < arr2Data.size(); i++ ) arrSortKey.add( arr2Data.get( i ).get( 0 ) );
Collections.sort( arrSortKey );
Key로 사용할 arrSortKey를 Collections.sort()를 이용하여 정렬하였습니다.
그리고, 새로운 2차원배열 객체를 생성하고, arrSortKey의 순서대로 데이터를 세팅합니다.
■ RESULT
정렬 전 : 정렬 후 : |
※ 참고
- 링크 ☞ 버블 정렬( Bubble Sort )를 이용한 데이터 정렬하기
끝.
'Study > Java' 카테고리의 다른 글
Java Exception : 예외처리 (0) | 2020.08.09 |
---|---|
버블 정렬( Bubble Sort )를 이용한 데이터 정렬하기 (0) | 2020.01.04 |
JDK( Java SE Development Kit ) 설치하기 (0) | 2020.01.01 |
[Java_File] 2차원배열 형태로 텍스트파일 읽기 (0) | 2019.12.21 |
[Java] String.split()를 이용한 데이터 분할하기 (0) | 2019.12.20 |