Java - 클래스 배열

2025. 1. 21. 11:41·Java

1. 기초

package basic_html;
import java.util.ArrayList;

public class arr8 {

	public static void main(String[] args) {
		ArrayList<String> al = new ArrayList<String>();	//<타입>
		al.add("홍길동");	//배열에 값 추가
		al.add("김유신");
		al.add("유관순");
		System.out.println(al);	// 배열 출력
		System.out.println(al.get(1));	// 배열의 값 출력
		System.out.println(al.size());	// 클래스 배열의 길이 출력
		al.remove(0);	//배열의 값 삭제
		System.out.println(al);
		al.clear();		//배열 초기화
		System.out.println(al);
		
		//정수 형태의 빈 클래스 선언
		//옛날버전
		// ArrayList<Integer> al2 = new ArrayList<Integer>();
		ArrayList<Integer> al2 = new ArrayList<>();
		al2.add(10);	//삽입시 10,20,30 이런거 안됨 다 따로써야함
		al2.add(20);
		al2.add(30);
		al2.add(40);
		System.out.println(al2.size());
		System.out.println(al2);
		
		ArrayList<Integer> al3 = (ArrayList)al2.clone();	//클래스 배열 복사
		al3.add(100);
		System.out.println(al3);
		System.out.println(al3.size());
		//자료형을 확인하는 방법
		System.out.println(al3.get(0).getClass());
		System.out.println(al3.get(0).getClass().getName());

		
		//ArrayList<String> al4 = (ArrayList)al2.clone();		//다른 자료형으로 복사
		//System.out.println(al4);
		//System.out.println(al4.get(0));		//개수도 찍히고 리스트도 찍히는데 가져올수없음 자료형이 바뀌면서 고장남
	}

}
              • 선언 : ArrayList<자료형> 이름 = new ArrayList<>();
              • add : 배열에 데이터 추가
              • remove : 배열의 데이터 삭제 
              • size : 배열의 데이터 개수
              • clear : 배열 초기화
              • get : 배열의 데이터 값 출력
              • 클래스 배열의 자료형 : String, integer, Double ... 클래스 형태의 자료형 사용
                • int, double 이런거 안된다는 뜻
              • clone() : 클래스 배열을 복사하는 메소드

2. 원시배열을 클래스 배열로 전환

package basic_html;
import java.util.ArrayList;
import java.util.Arrays;

public class arr9 {

	public static void main(String[] args) {
		//원시배열
		Integer data[] = {10,20,30,40,50};
		
		//클래스배열
		ArrayList<Integer> all = new ArrayList<Integer>(Arrays.asList(data));
//		System.out.println(all);
//		System.out.println(all.get(3));
		
		int f = 0;
		for(f = 0;f<all.size();f++) {
//			System.out.println(all.get(f));
		}
		
		Integer data2[] = {100,200,300};
		all.addAll(Arrays.asList(data2));	//배열에 배열 붙이기
		System.out.println(all);
		
		new arr9_box().arrbox();	//응용문제
	}
}

class arr9_box{
	/*
	 응용문제
	 해당 원시배열을 클래스 배열로 변환 후 해당 데이터중 짝수의 데이터 값만 출력
	 */
	final Integer no[] = {15, 22, 16, 33, 42, 51, 50, 98, 94, 47, 32};
	
	public void arrbox() {
		ArrayList<Integer> nocl = new ArrayList<Integer>(Arrays.asList(this.no));
		int i = 0;
		while(i<nocl.size()) {
			if(nocl.get(i)%2==0) {
				System.out.println(nocl.get(i));
			}
			i++;
		}
		nocl.set(3, 1000);
		System.out.println(nocl);
	}
}
  • Arrays.asList(원시배열변수이름) : 원시배열의 값을 복사
  • addAll() : 추가 원시배열 데이터를 적용
  • set(a,b) : 해당 클래스배열에 있는 값을 수정할때 (a번째 값을 b로 변경)

😊응용문제

사용자를 추가하는 코드를 작성
 "사용자명을 입력하세요 : "
 홍길동
 "사용자명을 입력하세요 : "
 이순신
 "사용자명을 입력하세요 : "
 강감찬
 최대 5번 질문하여 다음과 같은 결과가 나오도록 하시오
 ["홍길동","이순신","강감찬","유관순","장보고"]
package basic_html;

public class arr10 {
	public static void main(String[] args) {		
		new arr10_box().arrbox();	//원래 이렇게 쓰면 안대영! 이런건 배우지마!
	}
}

class arr10_box{
	Scanner sc = null;
	ArrayList<String> nl = null;
	String name = null;
	
	public void arrbox() {
		this.nl = new ArrayList<>();
		this.sc = new Scanner(System.in);
		
		int cnt = 5;
		while(cnt>0) {
			System.out.println("사용자명을 입력하세요(입력종료 1) : ");
			this.name = this.sc.next();
			if(this.name.equals("1")) {
				break;
			}else {
				this.nl.add(this.name);
			}
			cnt--;
		}
		this.sc.close();
		System.out.println(this.nl);
	}
}

3. 데이터 할당 갯수 및 배열 정렬 방식

package basic_html;

public class arr10 {
	public static void main(String[] args) {
		ArrayList<Integer> al = new ArrayList<Integer>();
		int f = 0;
		for(f = 0;f<5518; f++) {
			al.add(f);
		}
		System.out.println(al);

		new arr10_box().aligns();
		new arr10_box().aligns2();
	}
}

class arr10_box{
	ArrayList<String> nl = null;
	ArrayList<Integer> al = null;

	public void aligns() {
		Integer number[] = {5,1,22,6,11,9,7};
		this.al = new ArrayList<>(Arrays.asList(number));
		System.out.println(this.al);
		Collections.sort(this.al);	//배열에 데이터가 오름차순으로 정렬 (클래스 배열)
		System.out.println(this.al);
		Collections.sort(this.al,Collections.reverseOrder());	//배열에 데이터가 내림차순으로 정렬 (클래스 배열)
		System.out.println(this.al);
		
		//문자열도 정렬 가능 
		String user[] = {"구나영","이가연","황재준","김수영","임민섭"};
		this.nl = new ArrayList<>(Arrays.asList(user));
		System.out.println(this.nl);
		Collections.sort(this.nl);	
		System.out.println(this.nl);
	}
	
	public void aligns2() {
		Integer number[] = {5,1,22,6,11,9,7};
		Arrays.sort(number);	//원시배열 오름차순 정렬
		System.out.println(Arrays.toString(number));
		Arrays.sort(number,Collections.reverseOrder());		//원시배열 내림차순 정렬
		System.out.println(Arrays.toString(number));

		
	}
}
  • 클래스 배열의 최대값 5518 // 0~ 5517
  • 클래스 배열 정렬
    • 오름차순 : Collections.sort(클래스배열);
    • 내림차순 : Collections.sort(클래스배열,Collections.reverseOrder());
  • 원시 배열 정렬
    • 오름차순 : Arrays.sort(원시배열);
    • 내림차순 :Arrays.sort(원시배열,Collections.reverseOrder());

4. 2차 클래스 배열

생성

public static void main(String[] args) {
		Integer a[][] = {
				{10,20,30},
				{100,200,300}
		};
        
		//빈 2차 클래스 배열 
		ArrayList<ArrayList<Integer>> al = new ArrayList<ArrayList<Integer>>(Arrays.asList());
		//빈 1차 클래스 배열 
		ArrayList<Integer>al2 = new ArrayList<Integer>();
		al2.add(10);
		al2.add(20);
		al2.add(30);
		al.add(al2);
		System.out.println(al);
		
		int w = 0;
		while(w<a.length) {	//2
			al2 = new ArrayList<Integer>();		
			int ww = 0;
			while(ww<a[0].length) {
				al2.add(a[w][ww]);		
				ww++;
			}
			al.add(al2);
			w++;
		}
		System.out.println(al);
		System.out.println(al.get(1).get(2));	//al[1][2]
	}
  • 2차 클래스 배열에 데이터 값을 적용해야 할 경우
    • 1차 클래스 배열을 생성 후  데이터를 추가하여 2차 클래스 배열에 적용해야만 정상적으로 반영
    • 1. 원시배열을 자료형 클래스로 변환
    • 2. 1차 클래스 배열을 생성하여 데이터를 이관
    • 3. 1차 클래스 배열을 2차 클래스 배열로 이관
    • 4. 2차 클래스 배열 출력

😊응용문제

2차 원시배열 각각의 그룹 데이터중 짝수의 값만 그룹별로 2차 클래스배열에 적용
[[20,30],[8,44],[20]]
Integer datalist[][] = {
{15,20,25,30},
{8,11,31,44},
{17,41,39,20}
};
class arr11_box{
	ArrayList<Integer> al = null;
	ArrayList<ArrayList<Integer>> all = null;
	Integer datalist[][] = {
			{15,20,25,30},
			{8,11,31,44},
			{17,41,39,20}
	};
    
	public void arr11box() {
		int w = 0;
		this.all = new ArrayList<ArrayList<Integer>>();
		while(w<this.datalist.length) {
			this.al = new ArrayList<Integer>();
			
			int ww = 0;
			while(ww<this.datalist[0].length) {
				if(this.datalist[w][ww]%2==0) {
					this.al.add(this.datalist[w][ww]);
				}
				ww++;
			}
			this.all.add(this.al);
			w++;
		}
		System.out.println(this.all);
	}
}

 

5. 메소드를 활용해 2차 클래스 배열 데이터 만들기 

package basic_html;
import java.util.ArrayList;
import java.util.Arrays;

public class arr12 {
	public static void main(String[] args) {	
		Integer datalist[][] = {
				{15,20,25,30},
				{8,11,31,44},
				{17,41,39,20}
		};
		arr12_box ab = new arr12_box();	//외부 클래스 로드

		ArrayList<ArrayList<Integer>> all = new ArrayList<ArrayList<Integer>>();
		int w = 0;
		while(w < datalist.length) {
			//abc라는 메소드에 원시 1차 배열값을 전송 후 1차 클래스 배열로 return 결과를 받음
			ArrayList<Integer> data = ab.abc(datalist[w]);
			all.add(data);	//return받은 결과값을 2차 클래스 배열에 추가
			w++;
		}
		System.out.println(all);	//출력
	}
}

class arr12_box{
	public ArrayList<Integer> abc(Integer list[]){	//1차 클래스 배열 메소드 
		//1차 클래스 배열을 생성 
		ArrayList<Integer> al = new ArrayList<Integer>(Arrays.asList(list));
		return al;	//생성된 1차 클래스 배열값을 회신 
	}	
	public ArrayList<ArrayList<String>> bbb(){	//2차 클래스 메소드
		return null;
	}	
}

 

 

 

저작자표시 비영리 변경금지 (새창열림)
'Java' 카테고리의 다른 글
  • Java - 예외처리
  • Java - DTO 활용
  • Java - 배열
  • 복습 8 - java 기초
9na0
9na0
응애
  • 9na0
    구나딩
    9na0
  • 전체
    오늘
    어제
    • 분류 전체보기 (211)
      • Web (118)
      • Java (28)
      • 데이터베이스 (14)
      • 세팅 (12)
      • 과제 (3)
      • 쪽지시험 (2)
      • 정보처리기사 (4)
      • 서버 (25)
  • 블로그 메뉴

    • 링크

      • 포폴
      • 구깃
    • 공지사항

    • 인기 글

    • 태그

      ab1
      re_java10
      net2
      macbook pro m4
      net4
      Oracle
      java_io1~10
      net3
      datalist
      noticewriteok
      io_dto
      file25_t
      spring-boot
      re2
      file25
      net1
      file24
      net5~10
      exam1_1~10
      notice_writer
    • 최근 댓글

    • 최근 글

    • hELLO· Designed By정상우.v4.10.3
    9na0
    Java - 클래스 배열
    상단으로

    티스토리툴바