⚡ 주의
* sort 사용 시 주의사항 : 반복문에 new오브젝트 사용시 할당량을 확인해야함
* 반복문 사용시 1차배열 생성이 중요하다. 또한, 2차배열도 반복문 안과 밖에 따라 다른 결과가 출력 될 수 있다
* 2차 및 다차원 배열시 sort를 1차배열 형태에 적용하면 추가 2차배열 및 다차원 배열 모두 동일하게 적용된다
( 2차배열엔 sort하지 않는게 좋다! )
package oop;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
public class web1 {
public static void main(String[] args) {
//-- sort 사용 시 주의사항 : 반복문에 new오브젝트 사용시 할당량을 확인해야함
Integer a[] = {5,10,8,4,2};
ArrayList<Integer> arr1 = null;
ArrayList<Integer> arr2 = new ArrayList<Integer>();
int w=0;
while(w<a.length) {
arr1 = new ArrayList<Integer>();
arr1.add(a[w]);
arr2.add(arr1.get(0));
w++;
}
Collections.sort(arr1);
System.out.println(arr1); //[2] 이상함 - 반복문에서 new사용으로 arr1값이 리셋됨
System.out.println(arr2); //[5, 10, 8, 4, 2]
//-- 1차=>2차배열
//: 반복문 사용시 1차배열 생성이 중요하다.
//또한, 2차배열도 반복문 안과 밖에 따라 다른 결과가 출력 될 수 있다
String user[][] = {
{"hong","kim","park"},
{"21","16","33"}
};
ArrayList<ArrayList<String>> all = new ArrayList<ArrayList<String>>();
ArrayList<ArrayList<String>> all2 = new ArrayList<ArrayList<String>>();
ArrayList<String> al = null;
int f;
for(f=0; f<user[0].length; f++) { //3
al = new ArrayList<String>(); //new-1차배열 생성(리셋됨)
al.add(user[0][f]);
al.add(user[1][f]);
all.add(al);
all2.add(al);
}
System.out.println(all); //[[hong, 21], [kim, 16], [park, 33]]
Collections.sort(all.get(0)); //0번째것만 sort햇는데 all2도 sort됨
System.out.println(all); //[[21, hong], [kim, 16], [park, 33]]
System.out.println(all2); //[[21, hong], [kim, 16], [park, 33]]
//2차배열엔 sort하지 않는게 좋다!
//2차 및 다차원 배열시 sort를 1차배열 형태에 적용하면
//추가 2차배열 및 다차원 배열 모두 동일하게 적용된다
}
}
⚡ 2차 class 배열을 이용한 정렬방식
package oop;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
//2차 class 배열을 이용한 정렬방식
public class web2 {
public static void main(String[] args) {
//나이 오름차순에 따른 2차배열 정렬
final String a[][] = {
{"김남주","윤보미","정은지"},
{"21","19","24"}
};
ArrayList<String> all = new ArrayList<String>(Arrays.asList(a[1])); //나이만 가져옴
Collections.sort(all);
//System.out.println(all);
//--- 최종 결과 데이터 배열
ArrayList<ArrayList<String>> all2 = new ArrayList<ArrayList<String>>();
int ww=0;
while(ww<a.length) { //2
ArrayList<String> mb = new ArrayList<String>();
int z=0;
while(z<a[0].length) { //3
String node = all.get(z);
//원시배열을 가상 클래스화하여 IndexOf로 위치를 파악(배열번호 위치)
//(Arrays.asList(a[1]) : 가상 상 클래스화)
int ck = Arrays.asList(a[1]).indexOf(node);
//indexOf는 무조건 숫자로, -1 : 단어 없음
mb.add(a[ww][ck]);
//System.out.println(node);
//System.out.println(ck);
z++;
}
all2.add(mb); //최종 결과 데이터를 그룹 순서에 맞게 적용
ww++;
}
System.out.println(all2); //[[윤보미, 김남주, 정은지], [19, 21, 24]]
}
}