⚡ 주의
* 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]] } }
'CLASS > JAVA' 카테고리의 다른 글
#7-3 / LinkedList 클래스 배열 (0) | 2024.05.09 |
---|---|
#7-2 / getter,setter (0) | 2024.05.09 |
#6-3 / 2차 class 배열 (0) | 2024.05.08 |
#6-2 / class배열(ArrayList) (0) | 2024.05.08 |
#6-1 / 데이터 반환,외부 원시배열 데이터 반환 (0) | 2024.05.08 |