java - Collection의 ArrayList

songmin jeon·2023년 12월 5일
0


1. 객체배열

  • 여러 객체를 객체배열에 담아서 관리하는 것
  • 이차원 배열과 비슷하다!

포켓몬 게임을 만들어 보며 배우기!

1.1. Pokemon 클래스 만들기

클래스에는 크게
1. 필드 (포켓몬의 이름, 타입, 스킬, hp, atk)
2. 메서드 (getter, setter, 생성자를 만들어 준다.)

  • 이전 교육 URL 참조하기 : 링크

for-each문

1.구조

for(Pokemon p : bag) {
실행문 공간
}

  • Pokemon p = 반복시킬 자료형 타입과 변수명
  • : = 콜론으로 구분 시킴
  • bag = 반복시킬 객체 이름 (이전에 객체 생성을 선언해야함. Pokemon bag = new Pokemon();)

2.작동 방식

    1. 배열 bag에는 세칸짜리가 있음
      bag = {[0 피카츄],[1 파이리],[2 꼬부기]}
    1. (Pokemon p : bag) p라는 공간이 생김
      bag[0]의 주소의 데이터를 p 공간에 넣어줌
    1. 실행문 로직을 실행
      } 를 끝으로 (Pokemon p : bag) bag의 공간으로 돌아감
    1. bag[1]의 주소의 데이터를 p 공간에 넣어줌
      실행문 로직을 실행
    1. bag[n]의 주소의 데이터가 없을때까지 반복
// for 문
for (int i = 0; i < bag.length; i++) {	
	String name = bag[i].getName();
	String type = bag[i].getType();
	int hp = 	  bag[i].getHp();
	System.out.println(name+"\t"+type+"\t"+hp);
}		
		
// for-each 문
// : 배열과 같이 여러개의 데이터를 저장하는 자료구조와 함게 사용
for(Pokemon p : bag) {
	String name = p.getName();
	String type = p.getType();
	int hp = 	  p.getHp();
	System.out.println(name+"\t"+type+"\t"+hp);
}

2. ArrayList

참조 하기 좋은 URL : 링크

  • ArrayList는 클래스(자료형)이다.
  • 크기가 가변적인 배열과 같은 형태를 가진 ★★클래스★★
  • 자료형을 저장할 수 있는 list 생성
  • 제네릭 기법(클래스 내부에서 사용할 자료형을 외부에서 지정하는 기법)

1) 데이터 추가하기
list.add() ; = ArrayList의 맨 뒤에 요소 추가

2) 원하는 위치에 데이터 추가하기
list.add(인덱스위치,) = 지정된 인덱스에 지정된 객체를 삽입

3) 데이터 삭제
list.remove(인덱스위치) = 지정된 인덱스의 요소 삭제
list.remove(Object o) = 지정된 객체를 제거한다.(성공하면 true)

4) 데이터 전체크기 가져오기
list.size() = ArrayList가 포함하는 요소의 개수 반환

5) 데이터 객체 가져오기
list.get(인덱스위치) = 지정된 인덱스의 요소 반환(가져옴) 

6) 데이터 전부 삭제하기
list.clear() = ArrayList의 모든 요소 삭제

ArrayList<String> list = new ArrayList<String>();
여기서 ArrayList<String>(); 는 기본 생성자
    1. ArrayList<제네릭> 생성
      : 레퍼런스 타입의 데이터만 저장할 수 있다.
      ex) String, Pokemin, Student ....
      그럼으로 int(기본자료형)은 안됨..!

  • ArrayList의 list. 을 통해 데이터 삽입,삭제,변경 등을 할 수 있다. 상세정보는 : 링크 참고

3. Collection!

참고 URL : 링크

  • JCF(Java Collections Framework)는 이러한 데이터, 자료구조인 컬렌션과 이를 구현하는 클래스를 정의하는 인터페이스를 제공한다.

  • 다음은 Java 컬렌션 프레임워크의 상속구조를 나타낸다.

3.1 제네릭(generic)

참고 URL : 링크

  • 클래스 내부에서 사용할 데이터 타입을 외부에서 지정하는 기법

ArrayList<자료형> 변수명 = new ArrayList<자료형>();
  • java.uti.ArrayList 가변 크기 배열을 구현한 클래스
  • ArrayList에 객체 삽입/삭제


  • sList.get(0)에 Student 라는 객체로 되어 있다는걸 알 수 있다.

4. DTO 데이터를 제네릭으로 하여 ArrayList에 값 담기

4.1. ArrayList 구조

  • ArrayList<Student.> sList 대입 방법 2가지
  • 첫 번째 :
    • Student s2 = new Student("이름", 25);
    • sList.add(s2); 로 생성자를 변수에 선언하고 넣는 방법
  • 두 번째 :
    • sList.add(new Student("임경남", 20)); 로 생성자를 선언하자 마자 리스트에 추가함.

4.2. 코드

// 1. Student 자료형을 보관할 수 있는 
// sList 라는 이름을 가진 ArrayList 생성
ArrayList<Student> sList = new ArrayList<Student>();
		
// 2. 데이터 추가(짝꿍의 이름, 나이를 가지고 있는 데이터를 추가)
Student s1 = new Student("전송민", 35);
sList.add(s1);
		
// 3. 짝꿍의 이름을 출력!
System.out.println(sList.get(0));
System.out.println(sList.get(0).getName());
System.out.println(sList.get(0).getAge());
		
// 4. 팀원 데이터 전부 추가하기 !
// 방법 (1) new 생성자로 ArrayList에 값 넣어줌.
sList.add(new Student("임경남", 20));
sList.add(new Student("김민수", 20));
sList.add(new Student("손지영", 20));
		
// 방법 (2) 변수에 생성자 정보를 넣고, ArrayList에 값 넣어줌.
Student s2 = new Student("변현호", 25);
Student s3 = new Student("김도현", 26);
Student s4 = new Student("김민성", 23);
sList.add(s2);
sList.add(s3);
sList.add(s4);
		
// 5. 팀원 이름, 나이 전부 출력 ! (for-each문 사용해보기)
for(Student so : sList) {
System.out.print(so.getName() + "\t");	
System.out.println(so.getAge());
}
profile
제가 한 번 해보겠습니다.

0개의 댓글