[JAVA] 컬렉션 프레임워크

김윤섭·2023년 2월 8일
0

JAVA

목록 보기
22/27
post-thumbnail

컬렉션 프레임워크 (Collection Framwork )란?

  • 다수의 데이터를 쉽게 처리할 수 있는 표준화 된 방법
  • 그 방법들이 표준화 되어 있다.
  • 기존 배열형태의 자료 저장에서 좀 더 다양한 데이터들을 저장한다.

Collecion Framwork의 종류


⭐⭐⭐⭐⭐ ArrayList가 제일 중요

HashMap클래스

  • 데이터에 이름표를 적용하여 저장하는 방법
  • HashMap클래스는 Map 인터페이스를 상속받는 '자료보관소'
  • Map 형태로 선언하고 HashMap형태로 할당한다. (암묵적 형변환)
  • HashMap 이름표의 데이터형(String) + HashMap에 저장할 데이터형을 클래스 이름으로 명시
  • "선언"과 "할당"시에 사용되며 이를 '제너릭스'라고 함
  • 제너릭스에 명시할 수 있는 데이터형 = 클래스이름
  • 기본 자료형을 보관 할 경우 wrapper클래스의 이름 사용
    - 예) int -> integer..
		Map<String, 저장할 데이터의 클래스 이름>data = new Hashmap<String, 저장할 데이터의 클래스 이름>();
  • 기존에 저장된 데이터와 중복되는 이름이 저장될 경우, 기존에 저장된 데이터를 덮어 씌운다.

(4) HashMap 클래스의 사용

  • 예를 들어, 점수 95, 100, 75에 각각 국어, 영어, 수학의 이름을 저장함
  • 국어 = 95, 영어 = 100, 수학 = 75
  • 이름으로 저장되기 때문에 순서 상관없음
  • 중복 안되고 수정만 가능
  • 데이터 추가는 "put"메서드 사용
		Map<String, Integer> hm
			= new HashMap<String, Integer>();
		
		// hm이라는 해쉬맵에 kor,math,eng이라는 점수가 저장됨
		hm.put("kor", 90);
		hm.put("math", 100);
		hm.put("eng", 95);
        System.out.println( "hashmap size : " + hm.size()); // 값 : 3
		// 객체를 넣는 것이므로 null 사용가능
		hm.put("kor", null);
 		hm.put("kor", 80);
        
		//저장된 갯수를 얻기 
		System.out.println( "hashmap size : " + hm.size());
        // 값 : 3, kor의 값이 90-> null -> 80이 된것 뿐 사이즈는 증가하지 않음
		
		//저장된 데이터 꺼내기
		System.out.println( hm.get("kor"));
		System.out.println( hm.get("math"));
		System.out.println( hm.get("eng"));
        
        출력값 : hashmap size : 3
				80
				100
				95

(5) ArrayList ⭐⭐⭐

  • 무제한 확장 가능한 배열
  • ArrayList는 List 인터페이스를 상속
  • 데이터를 이름표없이 무제한으로 보관가능
  • ArrayList에 추가되는 데이터는 순차적으로 인덱스번호 부여받음 ( 배열과 비슷 )
  • 상위 인터페이스형으로 선언하고 ArrayList 클래스로 객체를 할당
  • "선언"과 "할당"시에는 보관하고자하는 자료형에 대한 제너릭스 명시
	List<저장할 데이터의 클래스 이름> list
		= new ArrayList<저장할 데이터의 클래스 이름>();
	List<Integer> numberList
		= new ArrayList<Integer>();

(6)ArrayList의 사용

  • 데이터 추가 : add (HashMap은 "put")
import java.util.ArrayList;
import java.util.List;

public class Main02 {

	public static void main(String[] args) {
    
		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);
  • 데이터 수량 : size
// 추가된 데이터의 수량
		int count = numberList.size();
		System.out.println("데이터 크기 : " + count);
		// 출력값 | 데이터 크기 : 8 9
  • 값 얻기 : get
	//5번째 요소의 값 얻기
		int value = numberList.get(4);
		System.out.println("5번째 요소의 값 : " + value);
		// 출력값 | 5번째 요소의 값 : 50
  • 한 줄 삭제 : remove
		//5번째 요소의 값 삭제
		numberList.remove(4);
		
		//하나를 삭제 후, 전체 크기 다시 조회
		count = numberList.size();
		System.out.println("데이터 크기 : " + count);
		// 출력값 | 데이터 크기 : 8
      
		// 5번째 요소의 값을 다시 얻기
		value = numberList.get(4);
		System.out.println("5번째 요소의 값 : " + value); 
        // 출력값 | 5번째 요소의 값 : 60
        // 기존 6번째 값부터 재배열
  • 원하는 자리에 데이터 추가 : add(x,y)
    - x : 원하는자리-1, y : 추가할 데이터
    // 5번째 자리에 데이터 추가
    			numberList.add(4,123);
    			value = numberList.get(4);
    			System.out.println("5번째 요소의 값 : " + value); 
        // 출력값 | 5번째 요소의 값 : 123
        // 같은자리에 재할당도 가능
  • 전체 삭제 : clear (remove랑 비교)
    numberList.clear();
    			count = numberList.size();
    			System.out.println("데이터 크기 : " + count); 
        // 출력값 | 데이터 크기 : 0		
    

    (7) ArrayList 응용

  • List를 사용하는 가장 일반적인 방법 : 사용자 정의 클래스에 대한 객체를 포함 (cf. 자바 정의 클래스 : integer..)
  • 리스트 하나하나에 객체를 포함시킬 수 있음

- 사용자 정의 클래스 생성

```
// 주소록 데이터를 표현하기 위한 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 + "]";
}

}

```

- 객체 선언과 할당

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

public class Main03 {

	public static void main(String[] args) {
	List<Member> pList
			= new ArrayList<Member>();
          // ArrayList 하나하나에 객체 Member를 할당.

- 데이터 추가

  	for( int i = 0; i<10; i++) {
		pList.add( new Member("회원" + i, "0101234567" + i));
	}

* for문을 이용해 10명의 데이터를 임의로 추가

데이터 출력

	for( int i = 0; i<pList.size(); i++) {
			//List에 저장된 데이터를 하나 꺼내면,
			
			// get(i)로 하나씩 꺼내는 거야~~~
			Member item = pList.get(i); 
			//Member 클래스 형의 객체
          System.out.println(item.toString());
		}

결과

Member [name=회원0, phoneNo=01012345670]
Member [name=회원1, phoneNo=01012345671]
Member [name=회원2, phoneNo=01012345672]
Member [name=회원3, phoneNo=01012345673]
Member [name=회원4, phoneNo=01012345674]
Member [name=회원5, phoneNo=01012345675]
Member [name=회원6, phoneNo=01012345676]
Member [name=회원7, phoneNo=01012345677]
Member [name=회원8, phoneNo=01012345678]
Member [name=회원9, phoneNo=01012345679]

ArrayList와 HashMap의 차이 ⭐⭐⭐

📌 HashMap

  • 데이터에 이름 부여
  • 순서 상관 없음
  • 중복 안됨 수정만 가능
  • 데이터 추가 : " put "

📌 ArrayList

  • 이름 없음, 인덱스가 부여(0 시작)
  • 번호에 따라 순서가 있음
  • 중복 가능
  • 데이터 추가 : " add "
profile
안녕하세요

0개의 댓글