Notice
Recent Posts
Recent Comments
Link
«   2024/11   »
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
Tags more
Archives
Today
Total
관리 메뉴

요리사에서 IT개발자로

스파르타 부트캠프 자바 컬렉션 정리 본문

Java

스파르타 부트캠프 자바 컬렉션 정리

H.S-Backend 2024. 5. 8. 23:14

컬렉션(Collection) 종류

List. Set, Queue, Map

 

List : 순서있는 집합

Queue : FIFO

Set : 순서없는 집합(중복 x)

Map : 순서없음, Key, Value  한쌍 (Key중복X)

출처 : 스파르타 코딩클


ArrayList 활용하기 

import java.util.ArrayList;

public class col1 {
    public static void main(String[] args) {
        //ArrayList
        //import해야한다.

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

        intList.add(1);
        intList.add(2);
        intList.add(3);

        System.out.println(intList.get(0)); //1을 출력한다
        System.out.println(intList.get(1)); //2를 출력한다
        System.out.println(intList.get(2)); //3을 출력한다
        System.out.println(intList.toString());// 전체 출력 {1, 2, 3} 출력

        intList.set(1, 10); // 1순번의 값을 10으로 수정
        System.out.println(intList.get(1)); //10으로 출력

        intList.remove(1); //0이 1번째 이므로 2번째의 1번순번의 값 2를 삭제한다.
        System.out.println(intList.toString()); // {1, 3}을 출력
        
        intList.clear(); //전체값을 삭제한다
        System.out.println(intList.toString()); // {}출력


    }
}

LinkedList 

조회하는 속도가 느리다.

값을 중간에 추가하거나 삭제할때는 빠르다.

import java.util.LinkedList;

public class col2 {
    public static void main(String[] args) {
        LinkedList<Integer> linkedList = new LinkedList<>(); //선언 및 생성

        linkedList.add(1);
        linkedList.add(2);
        linkedList.add(3);

        System.out.println(linkedList.get(0));
        System.out.println(linkedList.get(1));
        System.out.println(linkedList.get(2));
        System.out.println(linkedList.toString()); // {1, 2, 3}출력

        linkedList.add(2, 4); //2번 순번에 값을 추가한다.
        System.out.println(linkedList); //{1, 2, 4, 3} 출력

        linkedList.set(1, 10); //1번 순번의 값을 10으로 수정한다.
        System.out.println(linkedList); //{1, 10, 4, 3}을 출력

        linkedList.remove(1); //1번째의 값을 삭제한다.
        System.out.println(linkedList); //{1, 4, 3} 출력

        linkedList.clear(); //전체값 삭제
        System.out.println(linkedList); //[]출력


    }
}

Stack(LIFO)

넣다(push), 조회(peek), 꺼내다(pop) 기능만 존재

import java.util.Stack;

public class col3 {
    public static void main(String[] args) {
        //stack을 사용하려면 import해야한다.
        Stack<Integer>intStack = new Stack<Integer>();

        intStack.push(1);
        intStack.push(2);
        intStack.push(3);

        while(!intStack.isEmpty()){ //다 지워질때 까지 출력해라
            System.out.println(intStack.pop()); //꺼내다 (LIFO) 3,2,1 출력
        }

        //다시 추가
        intStack.push(1);
        intStack.push(2);
        intStack.push(3);

        // peek(조회하다)
        System.out.println(intStack.peek()); // 3출력 
        System.out.println(intStack.size()); // 3출력
        
        //pop(꺼내다)
        System.out.println(intStack.pop()); //마지막값 3출력
        System.out.println(intStack.size()); //마지막값을 꺼내서 2를 출력

        System.out.println(intStack.pop()); //마지막값 2를 출력
        System.out.println(intStack.size()); //1출력
        
        while(!intStack.isEmpty()){   //다 지워질때까지 반복
            System.out.println(intStack.pop()); //1출력 (마지막남은 값을 출력하고 반복문을 조료한다.
        }
    }
}

Queue (FIFO)

넣다(add), 조회(peek), 꺼내다(poll) 기능만 존재

생성자가 없다.(LinkedList를사용)

import java.util.LinkedList;
import java.util.Queue;

public class col4 {
    public static void main(String[] args) {
        //위와 똑같이 import해야한다

        Queue<Integer>intQueue = new LinkedList<Integer>(); //선언 과 생성

        intQueue.add(1);
        intQueue.add(2);
        intQueue.add(3);

        while(!intQueue.isEmpty()) { //다 지워질때 까지 출력한다
            System.out.println(intQueue.poll()); //1, 2, 3 을 출력
        }
        //다시 추가
        intQueue.add(1);
        intQueue.add(2);
        intQueue.add(3);

        //peek 조회하다
        System.out.println(intQueue.peek()); //1을 출력한다(FIFO)
        System.out.println(intQueue.size()); //3출력 (peek는 꺼내다가 아닌 조회하다)
        
        //poll 꺼내다
        System.out.println(intQueue.poll()); //1출력
        System.out.println(intQueue.size()); //2출력 꺼내서 삭제됌

        System.out.println(intQueue.poll()); //2출력
        System.out.println(intQueue.size()); //1출력 꺼내서 삭제되었다
        
        while(!intQueue.isEmpty()) {
            System.out.println(intQueue.poll()); //마지막 남은 3을출력하고 반복문이 종료가 됌
        }
    }


}

set

순서가없다

중복x

생성자가 없다

Hashset과 TreeSet으로 응용할 수있다.

 

Hashset

가장빠르다, 순서는 무작위

TreeSet

정렬된 순서대로 저장, 정렬방법 지정불가

LinkedHashSet

추가된 순서 or 가장 최근에 접근한 순서대로 접근 가능

(주로 사용)

 


import java.util.HashSet;
import java.util.Set;
import java.util.TreeSet;

public class col5 {
    public static void main(String[] args) {
        Set<Integer> intSet = new HashSet<Integer>(); //선언 생성

        intSet.add(1);
        intSet.add(2);
        intSet.add(3);
        intSet.add(3); //중복
        intSet.add(3); //중복

        for(Integer value : intSet){
            System.out.println(value); //1, 2, 3 출력 중복값 출력하지않는다
        }

        //contains = boolean 타입의 일치하는지
        System.out.println(intSet.contains(2)); //2라는 값이 존재하여 true
        System.out.println(intSet.contains(4)); //4가 없어서 false;
        
        //remove 삭제하다
        intSet.remove(3); //3을 삭제한다
        
        for(Integer value : intSet){
            System.out.println(value); //1,2 출력
        }

    }
}

Map

생성자가 없다.

Key값 단위로 중복x

key -value 한쌍

Map은 그냥 쓸 수 있지만 HashMap, TreeMap, HashSet, TreeSet으로 사용가능하다.

 

HashMap

중복X 순서X

키와 값 Null 가능

TreeMap

Key값 기준 정렬

저장시간이 오래걸린다.

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

public class col6 {
    public static void main(String[] args) {
        Map<String, Integer> intMap = new HashMap<>(); //선언 및 생성

        intMap.put("일", 11);
        intMap.put("이", 12);
        intMap.put("삼", 13);
        intMap.put("삼", 14);  //key중복
        intMap.put("삼", 15);  //key중복

        //key값 전체출력
        for(String key : intMap.keySet()) {
            System.out.println(key);  //이 일 삼 출력
        }

        //value값 전체출력
        for(Integer key : intMap.values()){
            System.out.println(key); //12, 11, 15 출력
        }

        //get 가져오다
        System.out.println(intMap.get("삼")); //15출력
    }
}

 

length

배열의 길이 조회

 

length()

문자열의 길이 조회

 

size()

컬렉션 타입의 길이 조회

 


반응형