본문 바로가기
JAVA/JAVA복습(멘토씨리즈 자바)

[JAVA복습] 16. 컬렉션 프레임워크

by ssunooo 2024. 7. 27.

 

 

1. 핵심 정리

 

컬렉션 프레임워크란?

컬렉션 프레임워크는 데이터를 다룰 때 사용되는 주요 자료구조

컬렉션은 기존의 List, Map, Set 등의 자료 구조를 뜻하고 프레임워크는 클래스와 인터페이스를 묶어 놓은 개념

 

List 컬렉션

배열과 비슷하게 index로 객체를 관리

다만, 배열과 다르게 크기의 제한이 없으며 삽입, 삭제, 변경의 기능이 자유로움

List에는 대표적으로 ArrayList와 LinkedList가 있음

 

ArrayList

데이터를 순차적으로 저장

데이터가 삽입될 때마다 크기가 증가하고 배열을 삭제하면 공간이 줄어듬

index를 기준으로 값을 삽입하거나 추출

 

LinkedList

Node 객체를 기반으로 데이터를 저장

Node 객체는 데이터와 자신 다음에 올 데이터의 주소를 값으로 가짐

 

ArrayList는 데이터를 출력하거나 검색할 경우에,

LinkedList는 데이터의 삽입과 삭제가 빈번할 경우에 사용하면 더 좋은 성능을 보여줌

 

Set 컬렉션

Set 컬렉션은 List 컬렉션과 다르게 객체의 저장 순서를 저장하지 않으며, 데이터의 중복을 허용하지 않음

또한 데이터를 저장할 때 index를 부여하지 않기 때문에, 데이터가 입력된 순서로 출력된다는 보장이 없음

대표적으로 HasgSet이 있음

 

Map 컬렉션

Map 컬렉션은 List, Set 컬렉션과 달리 Map Interface가 별도로 존재하며 데이터를 List 계열의 컬렉션과 다르게 처리

Map은 Key의 중복을 허용하지 않음

만약 Key가 중복 된다면 기존에 있던 Key에 해당하는 Value 값이 마지막으로 등록된 값으로 치환

대표적으로 Map을 상속받아 구현한 HashMap, TreeMap, LinkedHashMap이 있음

 

HashSet / HashMap

HashSet 또는 HashMap은 객체 데이터를 value 또는 Key로 할 경우, 중복 객체 체크를 위해

해당 객체의 hashCode()와 equals() 메서드를 Override하여 구현해야 함

 


 

2. 응용 문제

 

Q1. 다음 중 컬렉션의 설명으로 틀린 것은 무엇입니까?

  1. List 컬렉션은 index로 객체를 관리하며 중복 저장을 허용합니다.
  2. Set 컬렉션은 순서를 유지하지 않으며 중복 저장을 허용하지 않습니다.
  3. Map 컬렉션은 key와 value로 구성된 Map.Entry를 저장합니다.
  4. LinkedList는 List 컬렉션과 동일하게 index로 객체를 관리합니다.

A1. 4 - LinkedList는 index가 실제 존재하지 않다.

 


 

Q2.  다음 빈칸(             )에 알맞은 코드를 작성해 보세요.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
package section16;
 
public class PRACTICE_16_02 {
    public static void main(String[] args) {
        
       List list=newArrayList<>();
        
        list.add(1);
        list.add(2);
        list.add(3);
        list.add(4);
        list.add(5);
        
        for(int i=0;i<list.size();i++) {
            System.out.println(list.get(i));
        }
    }
}
 
cs

A2. 빈칸안에 제네릭을 추가해줘야 한다.

       현재 그 밑에 코드를 확인해보면 정수형을 추가 하고 있으니 <Integer> 제네릭을 추가해주면 된다.

 


 

Q3. 다음 중 Set 컬렉션에 대한 설명으로 틀린 것은 무엇입니까?

  1. 대표적인 구현 클래스로는 HashSet, LinkedHashSet, TreeSet이 있습니다.
  2. Set 컬렉션에서 객체를 하나씩 꺼내오고 싶다면 Iterator를 이용합니다.
  3. HashSet은 hashCode()와 equals()를 이용해 중복된 객체를 판별합니다.
  4. Set 컬렉션에는 null을 저장할 수 없습니다.

A3. 4

 


 

Q4. 랜덤 함수를 사용해 리스트 컬렉션에 10개의 숫자를 입력한 후 입력된 숫자 중에서 짝수의 합을 구하여 출력해 보세요.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
package section16;
 
import java.util.ArrayList;
import java.util.List;
 
public class ArrayListSumExample {
    public static void main(String[] args) {
        
        List<Integer> list=new ArrayList<>();
        
        for(int i=0;i<10;i++) {
            
        }
        int sum=0;
        
        for(int i=0;i<list.size();i++) {
            
        }
        System.out.println("짝수의 합 : "+sum);
    }
}
 
cs

A4. 


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
package section16;
 
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
 
public class ArrayListSumExample {
    public static void main(String[] args) {
        Scanner sc=new Scanner(System.in);
        
        List<Integer> list=new ArrayList<>();
        
        int num=0;
        
        for(int i=0;i<10;i++) {
            System.out.print("정수 입력 >> ");
            num=sc.nextInt();
            list.add(num);
        }
        int sum=0;
        
        for(int i=0;i<list.size();i++) {
            if(list.get(i)%2==0) {
                sum+=list.get(i);
            }
        }
        System.out.println("짝수의 합 : "+sum);
    }
}
 
cs

 


 

Q5. 주머니에는 파란색, 빨간색, 검은색 공이 모두 10개 들어있습니다. 각각의 색깔을 지닌 공이 몇 개씩 들어있는지 Map

       컬렉션을 사용하여 출력해 보세요.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
package section16;
 
import java.util.HashMap;
import java.util.Map;
 
public class PRACTICE_16_05 {
    public static void main(String[] args) {
        
        String[] balls= {"빨간색""파란색""검은색""검은색""빨간색""파란색",
                         "빨간색""빨간색""파란색""검은색"};
        
        Map<String,Integer> map=new HashMap<>();
        
        for(String ball:balls) {
            
        }
    }
}
 
cs

A5. 


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
package section16;
 
import java.util.HashMap;
import java.util.Map;
 
public class PRACTICE_16_05 {
    public static void main(String[] args) {
        
        String[] balls= {"빨간색""파란색""검은색""검은색""빨간색""파란색",
                         "빨간색""빨간색""파란색""검은색"};
        
        Map<String,Integer> map=new HashMap<>();
        
        int redNum=1;
        int blackNum=1;
        int blueNum=1;
        
        for(String ball:balls) {
            if(ball=="빨간색") {
                map.put(ball, redNum++);
            }
            else if(ball=="검은색") {
                map.put(ball, blackNum++);
            }
            else {
                map.put(ball, blueNum++);
            }
        }
        System.out.println("빨간색 : "+map.get("빨간색")+"개");
        System.out.println("파란색 : "+map.get("파란색")+"개");
        System.out.println("검은색 : "+map.get("검은색")+"개");
        
    }
}
 
cs

 


 

Q6. 다음 빈칸에 알맞은 단어를 작성해 보세요.

  • 데이터를 다룰 때 사용되는 주요 자료 구조를     컬렉션 프레임워크     라고 합니다.
  • 저장 순서가 유지되지 않으며, 객체를 중복해서 저장할 수 없고 하나의 null만 저장할 수 있는     Set    
    컬렉션이 있습니다.
  • Map 컬렉션은     key(키)        value(값)     으로 구성된 Map.Entry 객체를 저장하는 구조를 가지고
    있습니다.

 

 

2024.07.27

'JAVA > JAVA복습(멘토씨리즈 자바)' 카테고리의 다른 글

[JAVA복습] 18. 스레드  (0) 2024.07.29
[JAVA복습] 17. 람다식  (0) 2024.07.29
[JAVA복습] 15. 기본 API 클래스  (0) 2024.07.27
[JAVA복습] 14. 예외처리  (0) 2024.07.25
[JAVA복습] 13. 내부 클래스  (0) 2024.07.24