티스토리 뷰

1-21. 컬렉션 - 개념설명

📌 컬렉션(Collection)

자바에서 자료구조를 표현하는 인터페이스.

다수의 데이터를 다루기 위한 자료구조를 표현하고 사용하는 클래스의 집합.

- List : 순서가 있는 데이터의 집합, 데이터 중복 허용

- Set : 순서를 유지하지 않는 데이터의 집합, 데이터 중복 허용X

- Map : 키(key)와 값(value)의 쌍으로 이루어진 데이터의 집합.

            순서는 유지되지 않으며 키는 중복을 허용되지 않고 값은 중복을 허용합니다.

- Stack : 마지막에 넣은 데이터를 먼저 꺼내는 자료구조

- Queue : 먼저 넣은 데이터를 먼저 꺼내는 자료구조

 

1-22. 컬렉션 - 리스트, 셋, 맵

*배열은 사이즈가 고정되어야 하기 때문에 Arraylist를 사용함

✔ List

import java.util.ArrayList;
import java.util.Collections;
import java.util.List; //java.util 의 List 라는 인터페이스를 쓴다

public class Main {
    public static void main(String[] args) {
        //List <어떤 타입의 자료구조를 담을지> 선언
        List<Integer> integerList = new ArrayList<>(); //사이즈 지정 안 함
        integerList.add(1); //add 하는 순간 사이즈가 맞춰짐(자료가 많아질 수록 크기도 늘어남)
        integerList.add(5);
        integerList.add(4);
        integerList.add(11);
        integerList.add(10);
        System.out.println(integerList); // [1, 5, 4, 11, 10] 출력됨

        Collections.sort(integerList); // list 정렬 -기본 오름차순 정렬
        System.out.println(integerList); // [1, 4, 5, 10, 11]
        System.out.println(integerList.size()); // 5 element 개수 출력

        integerList.remove(4);
        System.out.println(integerList); //[1, 4, 5, 10] 11 삭제
    }
}

내가 넣은 데이터의 순서 유지됨

- sort( ) 오름차순 정렬.

- size( ) 개수 출력.

- remove(i) i번째 요소 삭제

 

+ 반복문 활용

//for문
//        for(int i=0;i<integerList.size();i++){
//            System.out.println(integerList.get(i)); //0부터 index 마지막 자리에 해당하는 i 구할 수 있음
//        }

//for each문
        for(int current:integerList){
            System.out.println(current);
        }
        //for each문 (index 번호 안 주고 씀) 배열의 요소 하나씩 꺼내서 current 에 할당해줌

 

- get(i) 0부터 i번째까지 [ ] 배열로 보여주고, 1줄씩 데이터들 보여줌. 

*위의 for문과 for each문 결과값은 같음

✔ Set

*int는 숫자 Primitive type 기본 자료형
Collection 프레임워크를 쓰기 위해서는, 이 자료 구조를 담는 것은 사실 객체이므로,

객체를 담을 수 있는 type이어야 함 = Reference Type 참조 자료형임.
대신, primitive type(integer, boolean, long 등)에 해당되는 클래스가 Java에 정의되어이 있으므로,
<integer>를 쓰면 int를 쓰는 것과 마찬가지가 됨

1.

        Set<Integer> integerSet = new HashSet<>(); //Set 인터페이스, HashSet 은 클래스
        integerSet.add(1);
        //생략
        integerSet.add(8);
        System.out.println(integerSet); //[1, 2, 3, 8, 9] 중복 제외, 내가 넣어준 순서 유지 X

데이터의 중복과 순서 유지X

 

2. 데이터 추가하거나 지우기

        Set<String> stringSet = new HashSet<>();
        stringSet.add("LA");
        //
        stringSet.add("Seoul");
        System.out.println(stringSet); //[San Francisco, New York, LasVegas, LA, Seoul]

 

        stringSet.remove("Seoul"); //순서가 없으므로 지울 것 지정해야 함

        List<String> target = new ArrayList<>();
        target.add("New York");
        target.add("LasVegas");
        stringSet.removeAll(target); //removeAll() 함수 Collection 타입이면 뭐든 올 수 있음
        System.out.println(stringSet); //[San Francisco, LA]

- add(" " ) 추가하기

- remove(" ") 지정한 1개 지우기

- removeAll( ) 변수 target으로 추가한 데이터 모두 지우기

 

3. 포함 여부 확인

System.out.println("LA 포함?" + stringSet.contains("LA")); //LA 포함?true
System.out.println("Seoul 포함?" + stringSet.contains("Seoul")); //Seoul 포함?false

- contains( ) 함수 data가 이 자료구조 안에 있는지 확인하는 함수. boolean true/false를 리턴함.

  object 또는 All 의 경우 Collection 받게 됨.

 

4. 개수 세기와 모두 비우기

System.out.println(stringSet.size()); //2
stringSet.clear();
System.out.println(stringSet); //[]

- size( ) 개수 출력.

- clear ( ) 자료구조 다 지움 [] 빈 자료구조 표현

✔ Map

키(key)와 값(value)을 하나의 데이터로 저장하는 특징을 가짐

1. 데이터 추가

Map<Integer, String> map = new HashMap<>(); //Map<key, value> 선언, 구현체는 HashMap
map.put(1, "apple");
map.put(2, "berry");
map.put(3, "cherry");
System.out.println(map); //{1=apple, 2=berry, 3=cherry} key=value 이렇게 표현됨

- put( ) 추가 ↔ List, Set 은 add( )

< > 꺽쇠가 표현하는 건 제네릭스(Generics)

 

2. 순서에 맞는 값 가져오고 지우기

System.out.println("1st in map: " + map.get(0)); //1st in map: null

get(Object key) - 우리는 0번이라는 key를 넣어주지 않았으므로  null 나옴.

System.out.println("1st in map: " + map.get(1)); //1st in map: apple

- get( ) 함수는 key를 받아서 value를 리턴하는 함수!

map.remove(2);
System.out.println(map); //{1=apple, 3=cherry}

- remove( )로 index가 아니라 key를 지움 

 

3. 포함 여부 확인

System.out.println(map.containsKey(2)); //false
System.out.println(map.containsValue("cherry")); //true

 

4. 모두 비우기

map.clear();
System.out.println(map); //{}

1-23. 컬렉션 - 스택, 큐, ArrayDeque

✔ Stack

✔ Queue