Java : 컬렉션 개념 & List 실습

커비·2024년 11월 12일
0

Java

목록 보기
33/55

🧬 컬렉션

  • 배열보다 다수의 참조형 데이터를 더 쉽고 효과적으로 처리할 수 있는 기능을 많이 가지고 있음

    컬렉션의 기능

    : 크기 자동조정, 추가, 수정, 삭제, 반복, 순회, 필터, 포함확인 등


🧬 컬렉션의 종류

  • Collection 에는 List, Set, Queue, Map 이 있다.

List

: 순서 있고 중복 있는 배열
: 순서가 있는 데이터의 집합(데이터 중복 허용) - 배열과 비슷함

Queue (많이 쓰임)

: 빨대처럼 한 쪽에서 데이터를 넣고 반대쪽에서 데이터를 뺄 수 있는 집합
: Firsy In First Out : 먼저 들어간 순서대로 값을 조회할 수 있음

Set

: 순서 없고 중복 없는 배열
: 순서가 없는 데이터의 집합(데이터 중복 허용 안함)

Map

: 순서가 없는 (Key, Value) 쌍으로 이루어진 데이터의 집합(Key값 중복 허용 안함)


🚧 복습! 자주사용하는 참조형 변수!

Collection은 기본형 변수가 아닌 참조형 변수를 저장함

  • int의 참조형 변수 = Integer
  • long의 참조형 변수 = Long
  • double의 참조형 변수 = Double
  • String은 원래부터 참조형 변수

Map을 의도치않게 선행학습하면서 공부했던 부분이라 바로 납득!


List

: 순서가 있는 데이터의 집합 => Array(최초 길이를 알아야 함)
: 처음에 길이를 몰라도 만들 수 있음
: 1) Array -> 정적배열
: 2) List(ArrayList) -> 동적배열(크기가 가변적으로 늘어난다)

Array 간단 설명

: Array는 메모리에서 요청한 만큼 최초에 정적으로 값을 받고 그것을 실제로 저장하는 기본형 변수저장

List 간단 설명

: 생성 시점에 작은 연속된 공간을 요청해서 참조형 변수들을 담아놓는다.
: 값이 추가될 때 더 큰 공간이 필요하면 더 큰 공간을 받아서 계속 동적으로 저장하니까 상관 없음

💡 기억하면 좋음!

.toString() : .앞에 있는 값을 사람이 볼 수 있도록 하는 것

   // 선언 +  생성
        ArrayList<Integer> intList = new ArrayList<Integer>();

        intList.add(99);
        intList.add(15);
        intList.add(3);

        //System.out.println(intList.get(1));

        // 2번째 있는 값(15)을 바꿔보자
        //intList.set(1, 10);
        System.out.println(intList.get(0));

        // 삭제
        intList.remove(0);
        System.out.println(intList.get(0));

        System.out.println("클리어 전");
        System.out.println(intList.toString());
        intList.clear();
        System.out.println("클리어 후");
        System.out.println(intList.toString());

Linked List

: 메모리에 남는 공간을 요청해서 여기 저기 나누어서 실제 값을 담아놓음
: 실제 값이 있는 주소 값으로 목록을 구성하고 저장하는 자료구조
: 기본적 기능은 -> Array List와 동일함
: ✅ LinkedList는 값 -> 여기 저기 나누어서 : 조회하는 속도가 느림
: ✅ 값을 추가하거나, 삭제할 때는 빠르다

public static void main(String[] args) {
        LinkedList<Integer> list = new LinkedList<Integer>();
        list.add(5);
        list.add(100);
        list.add(9);

        System.out.println(list.get(0));
        System.out.println(list.get(1));
        System.out.println(list.get(2));

        // 조회할 때는 ArrayList보다 속도가 현저히 느리다
        System.out.println(list.toString());

        // add(추가)
        list.add(200);
        System.out.println(list.toString());

        list.add(2,4);
        System.out.println(list.toString());

        // set(수정)
        list.set(1, 30);
        System.out.println(list.toString());

        // Remove(삭제)
        list.remove(1);
        System.out.println(list.toString());

        // clear(전체 삭제)
        list.clear();
        System.out.println(list.toString());
    }
profile
전공은 컴퓨터공학, 복수전공은 해킹보안학, 직장은 방학(파워 구직중)

0개의 댓글