day10 컬렉션 프레임워크

JTH·2023년 2월 3일
0

gb_jth

목록 보기
31/56

2. 컬렉션 프레임워크 (Collection Framework) 소개

2-1 Collection Framework란

  • 다수의 데이터를 쉽게 처리할 수 있는 표준화된 방법을 제공하는 클래스들로, 기존 배열형태의 자료 저장에서
    좀더 다양한 데이터들을 저장하기 위한 필수 클래스이다.

2-2 Collection Framework의 종류

이미지 참조.

2-3. HashMap클래스

  • 데이터에 이름표를 적용하여 저장하기
  • HashMap 클래스는 Map 인터페이스를 상속받는 '자료 보관소' 이기 때문에 암묵적 형변환의 규칙에 따라
    Map 형태로 선언하고 HashMap 형태로 할당한다.
  • 선언과 할당시에 HashMap의 이름표로 사용할 데이터 형(String)과 HashMap에 저장할 데이터형을 클래스의 이름으로
    명시해야 하는데, 이를 '제너릭스' 라고 한다.
  • 제너릭스에 명시할 수 있는 데이터 형은 반드시 클래스 이름이 여야 하기때문에 기본 자료형을 보관할 경우
    Wrapper 클래스의 이름을 사용해야 한다.
	Map<String, 저장할 데이터의 클래스이름> data
		= new HashMap<String, 저장할 데이터으 ㅣ클래스이름>();
  • 기존에 저장된 데이터와 중복되는 이름이 저장될 경우, 기존에 저장된 데이터를 덮어 씌우게 된다.
package collection;

import java.util.HashMap;
import java.util.Map;

public class Main01 {

	public static void main(String[] args) {
		//데이터를 저장할 배열 생성
		// 제너릭 -> <값의 이름, 값의 종류> 
		Map<String, Integer> hm
			= new HashMap<String, Integer>();
		
		//데이터 추가는 put 메서드 사용
		//-> 중복을 허용하지 않는다.
		hm.put("kor", 90);
		hm.put("math", 100);
		hm.put("eng", 95);
		// 객체를 넣는 것이므로 null 사용가능
		hm.put("kor", null);
		hm.put("kor", 80);
		
		// 저장된 갯수 얻기
		System.out.println(" hashmap size : " + hm.size());
		
		//저장된 데이터 꺼내기
		System.out.println(hm.get("kor"));
		System.out.println(hm.get("math"));
		System.out.println(hm.get("eng"));
	}

}

2-4. ArrayList

  • 무제한 확장 가능한 배열
  • ArrayList는 List 인터페이스를 상속받은 클래스로, 데이터를 이름표 없이 무제한으로 보관할 수 있다.
  • ArryaList에 추가되는 데이터는 순차적으로 배열과 같은 인덱스 번호를 부여 받는다.
  • 상위 인터페이스 형으로 선언하고 ArrayList 클래스로 객체를 할당하며, 선언과 할당 시에는 보관하고자 하는 자료형에
    대한 제러닉스 를 명시한다.
	-ArrayList의 선언
	
	List<저장할 데이터의 클래스 이름> list
		= new ArrayList<저장할 데이터의 클래스 이름>();

임포트 해주고~ 데이터 추가, 삭제, 조회

package collection;

import java.util.ArrayList;
import java.util.List;

public class Main02 {

	
	public static void main(String[] args) {
		// List 랑 ArrayList 둘다 임포트 해줘야함
		List<Integer> numberList
			= new ArrayList<Integer>();
		
		// 데이터 추가
		numberList.add(10);
		numberList.add(20);
		numberList.add(30);
		numberList.add(40);
		numberList.add(50);
		numberList.add(60);
		numberList.add(70);
		numberList.add(80);
		numberList.add(90);
		
		// 추가된 데이터의 수량
		int count = numberList.size();
		System.out.println("데이터의 크기 : " + count);
		
		// 5번째 요소의 값 얻기
		int value = numberList.get(4);
		System.out.println("5번째 요소의 값 : " + value);
		
		// 5번째 요소의 값 삭제
		numberList.remove(4);
		
		// 하나를 삭제 후, 전체 크기 다시 조회
		count = numberList.size();
		System.out.println("데이터의 크기 : " + count);
		
		// 5번째 요소의 값을 다시 얻기
		value = numberList.get(4);
		System.out.println("5번째 요소의 값 : " + value);
		
		//5번째 자리에 데이터 추가
		numberList.add(4,123);
		value = numberList.get(4);
		System.out.println("5번째 요소의 값 : " + value);
		
		//전체 삭제
		numberList.clear();
		count = numberList.size();
		System.out.println("데이터의 크기 : " + count);
		
		}

}

사용자 정의 클래스에 대한 객체포함

package collection;


// 주소록 데이터를 표현하기 위한 java beans
public class Member {

	private String name;
	private String phoneNo;
	
	public Member(String name, String phoneNo) {
		super();
		this.name = name;
		this.phoneNo = phoneNo;
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public String getPhoneNo() {
		return phoneNo;
	}

	public void setPhoneNo(String phoneNo) {
		this.phoneNo = phoneNo;
	}

	@Override
	public String toString() {
		return "Member [name=" + name + ", phoneNo=" + phoneNo + "]\n";
	}
	
	
	
}
package collection;

import java.util.ArrayList;
import java.util.List;

public class Main03 {

	public static void main(String[] args) {
		
		/*
		 * List를 사용하는 가장 일반적인 방법은,
		 * 사용자 정의 클래스에 대한 객체를 포함하도록 지정하는 것이다.
		 */
		
		List<Member> pList = new ArrayList<Member>();
		
		//10명의 데이터 임의로 추가
//		pList.add( new Member("회원0","01012345670"));
//		pList.add( new Member("회원1","01012345671"));
//		pList.add( new Member("회원2","01012345672"));
//		pList.add( new Member("회원3","01012345673"));
//		pList.add( new Member("회원4","01012345674"));
//		pList.add( new Member("회원5","01012345675"));
//		pList.add( new Member("회원6","01012345676"));
//		pList.add( new Member("회원7","01012345677"));
//		pList.add( new Member("회원8","01012345678"));
//		pList.add( new Member("회원9","01012345679"));
		
		
		for(int i = 0; i<10;i++) {
			pList.add(new Member("회원"+ i, "0101234567"+i));
		}
		
		
		//출력
		//toString(); 반복문, 
		for(int i = 0; i<pList.size();i++) {
			//List에 저장된 데이터를 하나 꺼내면,
			// Member 클래스 형의 객체
			Member item = pList.get(i);
			System.out.println(item.toString());
		}
		
		 System.out.println(pList.toString());
		
	}

}
profile
//

0개의 댓글