ArrayList<String> al = new ArrayList<String>();
ArrayList<Integer> al2 = new ArrayList<Integer>(); //int 사용 불가
기존 원시배열은 데이터 추가,수정,삭제 불가능하단 단점이 있다 -> class배열이 나옴(라이브러리 사용)
class배열에는 [] 선언도, 기능도 없다
<>에 자료형은 사용할 수 없다
⚡ 타이틀
- add : 배열에 데이터를 추가
- remove : 배열에 데이터 삭제(단, 데이터 삭제시 배열번호 변경됨)
- size() : 배열의 데이터 갯수(원시배열의 length와 같은 기능)
- clear() : 모든 데이터 삭제
- clone() : 클래스 배열을 복사(추가,삭제 모두 가능)
package oop; import java.util.ArrayList; //클래스 ArrayList 배열 public class array10 { public static void main(String[] args) { ay10_box ay = new ay10_box(); ay.abc(); } } class ay10_box { public void abc() { //문자열 타입의 빈 클래스 배열 선언문 ArrayList<String> al = new ArrayList<String>(); al.add("홍길동"); al.add("강감찬"); al.add("유관순"); al.add("이산"); al.add("이순신"); System.out.println(al.get(3)); //이산 System.out.println(al); //[홍길동, 강감찬, 유관순, 이산, 이순신] al.add("장보고"); System.out.println(al); //[홍길동, 강감찬, 유관순, 이산, 이순신, 장보고] al.remove(0); System.out.println(al); //[강감찬, 유관순, 이산, 이순신, 장보고], 감감찬 node번호 0번으로 변경(밀림) int ea = al.size(); System.out.println(ea); //5 al.clear(); System.out.println(al); //[] } }
🔽 클래스배열 복사ArrayList<Integer> al2 = new ArrayList<Integer>(); //빈배열 al2.add(5); al2.add(1); al2.add(8); System.out.println(al2); //[5, 1, 8] ArrayList<Integer> al3 = (ArrayList)al2.clone(); //빈배열 al3.add(10); al3.add(20); System.out.println(al3); //[5, 1, 8, 10, 20]
⚡ 원시 배열을 클래스 배열로 변환
-원시배열을 직접 사이트에 출력시키는 경우는 거의 없다
(대부분 원시배열->클래스배열로 변환 후사용)
Arrays.asList(원시배열) : 원시 배열값을 클래스로 변환하는 메소드
set() : 해당 배열 번호에 데이터 수정
package oop; import java.util.ArrayList; import java.util.Arrays; public class array11 { public static void main(String[] args) { Integer data[] = {10,20,30,40,50}; //class배열에 삽입시 자료형사용 x ArrayList<Integer> al = new ArrayList<Integer>(Arrays.asList(data)); System.out.println(al); //[10, 20, 30, 40, 50] al.add(60); al.add(70); System.out.println(al); //[10, 20, 30, 40, 50, 60, 70] //--반복문을 이용한 데이터 출력 ArrayList<String> al2 = new ArrayList<String>(); al2.add("HTML/CSS"); al2.add("Javascript 기초"); al2.add("Java OOP"); System.out.println(al2); //[HTML/CSS, Javascript 기초, Java OOP] int w=0; while( w<al2.size() ) { System.out.println(al2.get(w)); //a12데이터 한줄씩 출력 w++; } al2.set(1, "Ajax 기초"); System.out.println(al2); //[HTML/CSS, Ajax 기초, Java OOP] } }
⚡ 메모리 할당관련(지금은 자세히 알필요 x)
window-preferences - show heap status
작업하면서 현재 메모리 얼마나 쓰는지 알 수 있음
//메모리 할당 클래스 배열 (5517개 이상은 에러) ArrayList<Integer> al2 = new ArrayList<Integer>(10); int w = 0; while(w<550) { al2.add(w); w++; } System.out.println(al2); //sysout 출력안됨 - 기본 할당 메모리를 초과해서(w<5518까진 들어감) //메모리 변경 가능 - 자바버전별로 방식이 다름
⚡ 원시배열 -> 클래스 배열 이관 후 정렬
Collections.sort(클래스배열) : 오름차순 정렬 방식
Collections.sort(클래스배열,Collections.reverseOrder()) : 내림차순 정렬방식
=>Collection 라이브러리 사용
package oop; import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; public class array12 { public static void main(String[] args) { //-- 원시배열 이관 Integer data[] = {3,6,1,9,8,7,10,2}; //이관 후엔 더이상 손댈일 x ArrayList<Integer> al = new ArrayList<Integer>(Arrays.asList(data)); //- 숫자 오름차순,내림차순 Collections.sort(al); System.out.println(al); //[1, 2, 3, 6, 7, 8, 9, 10] 오름차순 Collections.sort(al,Collections.reverseOrder()); System.out.println(al); //[10, 9, 8, 7, 6, 3, 2, 1] 내림차순 정렬 //- 문자 오름차순,내림차순 String user[] = {"최하영","이윤석","김단희","하현수","김지현"}; ArrayList<String> al2 = new ArrayList<String>(Arrays.asList(user)); Collections.sort(al2); System.out.println(al2);//[김단희, 김지현, 이윤석, 최하영, 하현수] Collections.sort(al2,Collections.reverseOrder()); System.out.println(al2);//[하현수, 최하영, 이윤석, 김지현, 김단희] //- 원시배열 데이터 정렬 Integer adata[] = {5,10,3,1,7,6,2}; Arrays.sort(adata); //원시배열 오름차순 System.out.println(Arrays.toString(adata)); Arrays.sort(adata,Collections.reverseOrder()); //원시배열 내림차순 System.out.println(Arrays.toString(adata)); } }
🔽 응용문제1package oop; import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; public class array13 { public static void main(String[] args) { /* 다음 배열 데이터를 이용하여 결과와 동일하게 출력되도록 코드를 작성하시오. 1번데이터 : 100,55,67,90,13,7 2번데이터 : 9,16,22,31 결과 : [100,90,67,55,31,22,16,13,9,7] */ Integer a[] = {100,55,67,90,13,7}; Integer b[] = {9,16,22,31}; ArrayList<Integer> ar = new ArrayList<Integer>(Arrays.asList(a)); //-- 세은풀이 int f; for(f=0; f<b.length; f++) { ar.add(b[f]); } Collections.sort(ar,Collections.reverseOrder()); System.out.println(ar); //-- 선생님풀이 ArrayList<Integer> al = new ArrayList<Integer>(Arrays.asList(a)); ArrayList<Integer> al2 = new ArrayList<Integer>(Arrays.asList(b)); al.addAll(al2); //al에 모든 al2를 더해라 Collections.sort(al,Collections.reverseOrder()); System.out.println(al); } }
🔽 응용문제2package oop; import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; public class array13 { public static void main(String[] args) { /* 응용문제 풀어두 대구 안풀어두대구~ 다음 배열 데이터를 확인 후 홀수 데이터만 출력을 해야합니다. 단,홀수 데이터는 올림차순 정렬로 결과가 출력되도록 코드를 작성하시오. {10,16,9,7,31,45,27,94,86,87,112,100,3} 결과 : 3,7,9,27,31,45,87 */ Integer aa[] = {10,16,9,7,31,45,27,94,86,87,112,100,3}; ArrayList<Integer> aaList = new ArrayList<Integer>(Arrays.asList(aa)); ArrayList<Integer> aa_1 = new ArrayList<Integer>(); int aal; for(aal=0; aal<aaList.size(); aal++) { if(aaList.get(aal)%2 == 1) { //홀수 aa_1.add(aaList.get(aal)); } } Collections.sort(aa_1); System.out.println(aa_1); //[3, 7, 9, 27, 31, 45, 87] } }
'CLASS > JAVA' 카테고리의 다른 글
#7-1 / 주의 (0) | 2024.05.09 |
---|---|
#6-3 / 2차 class 배열 (0) | 2024.05.08 |
#6-1 / 데이터 반환,외부 원시배열 데이터 반환 (0) | 2024.05.08 |
#5-3 / 다차원 배열,return 메소드로 배열받기 (0) | 2024.05.07 |
#5-2 / 2차 원시 배열 (0) | 2024.05.07 |