2023년 1월 1일
08:00 AM
Buffering ...

최근 글 👑

[TIL] 내일배움캠프 웹개발 백엔드 과정 2024.07.25 김현수

2024. 7. 25. 21:54ㆍ코딩

컬렉션

 

자바에서 컬렌션은 배열보다 다수의 참조형 데이터를 더 쉽고 효과적으로 처리할 수 있는 기능을 많이 가지고 있습니다.

컬렉션 기능 : 크기 자동 조정/추가/수정/삭제/반복/순회/필터/포함 확인 등....

 

종류

collection 에는  list, set, queue, Map 이 있다.

 

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

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

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

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

 

@Collection 은 기본형 변수가 아닌 참조형 변수를 저장한다

ex) int = Integer, long = Long, double = Double, String은 원래부터 참조형 변수

 

 

 

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

01.ArrayList
-ArrayList는 배열처럼 일렬로 데이터를 저장하고 조회하여 순번 값(인덱스)로 값을 하나씩 조회할 수 있다

  • 특징 : 배열처럼 크기가 정해져 있지 않고 필요할 때마다 크기가 점점 더 늘어남
    Array = 크기를 고정하여 생성하는 정적 배열
    ArrayList = 크기가 가변적으로 늘어나는 동적 배열.

  • 기능
    • 선언 : ArrayList<Integer> intList 
    • 생성  new ArrayList<Inteager>();
    • 초기화 : 사이즈를 지정하는 것이 없기 때문에 초기화 할 필요가 없다
    • 값 추가 : intList.add({추가할 값}) 형태로 값을 추가
    • 값 수정 : intList.set({수정할 순번},{수정할 값});
    • 값 삭제 : intList.remove({삭제할 순번});
    • 전체 출력 : intList.toString() - 전체 값을 대괄호[] 로 묶어서 출력
    • 전체 제거 : intList.clear()

 

 

02.LinkedList

  • 특징
    • 기본적인 기능은 ArrayList와 동일하지만 LinkeList는 값을 나누어 담기 때문에 모든 값을 조회하는 속도가 느리다.
    • 대신, 값을 중간에 추가하거나 삭제할 때 속도가 빠르다.
  • 기능
    • 선언 : LinkedLuist<Integer> linkedList
    • 생성 : new LinkedList<Integer>();
    • 초기화 : 사이즈를 지정하는 것이 없기 때문에 초기화 필요 없음
    • 값 추가 : linkedList.add({추가할 값})
    • 값 중간에 추가 : linkedList.add({추가할 순번},{추가할 값})
    • 값 수정 : linkedList,set({수정할 순번}, {수정할 값})
    • 값 삭제 : linkedList.remove({삭제할 순번});
    • 전체 출력 : linkedList.toString() - 전체 값을 대괄호[]로 묶어서 출력한다
    • 전체 제거 : linkedList.cleak()

03.stack

  • 특징 
    • 밑에서 위로 쌓고, 꺼낼 때는 위에서 부터 꺼내는 형식
    • Last iIn First Out 의 성질을 가짐
  • 기능
    • 선언 : Stack<Integer> intStack
    • 생성 : new Stack<Integer>();
    • 추가 : intStack.push({추가할 값})
    • 조회 : intStack.peek() 맨 위의 값을 조회
    • 꺼내기 : intStack.pop() 맨 위의 값을 꺼냄(꺼내고 나면 삭제)

Queue

  • 특징
    • First In First Out : 먼저 들어간 순서대로 값을 조회 가능
    • 생성자가 없어 바로 생성할 수 없다 (인터페이서가 존재해야 함)
  • 기능
    • 선언 : Queue<Integer> intQueue
    • 생성 : new (생성자 존재 클래스)<Integer>();
    • 추가 : intQueue.add({추가할 값{)
    • 조회 : IntQueue.peer() 맨 아래 값을 조회
    • 꺼내기 : intQueue.poll() 맨 아래 값을 꺼냄

 

Set

  • 특징
    • 순서가 보장되지 않는 대신 중복을 허용하지 않도록 유지
    • HashSet,TreeSet 등으로 응용하여 사용 가능
    • Queue와 마찬가지로 생성자가 없어 바로 생성 불가
  • 기능 
    • 선언 : set<Integer> intSEt
    • 생성 : new HashSet<Integer>();
    • 추가 : intSet.add(P추가할 값})
    • 삭제 : intSet.remove({삭제할 값{)
    • 포함 확인 : intSet.contains({포함 확인 할 값}) 형태로 해당 값이 포함되어 있는지 boolean 값으로 응답
HashSet : 가장 빠르며 순서를 전혀 예측할 수 없음

TreeSet : 정렬된 순서대로 보관 가능하며 정렬 방법을 지정할 수 있음

LinkedHashSet : 추가된 순서, 또는 가장 최근에 접근한 순서대로 접근 가능

보통 HashSet을 사용 But 순서 보장이 필요하면 LinkedHashSet 을 주로 사용

 

Map

  • 특징
    • key-value 형태로 데이터를 저장하기 때문에 기존에 순번으로만 조회하던 방식에서
      key 값을 기준으로 value를 조회
    • HshMap,TreeMap 등으로 응용해서 사용 가능
  • 기능 
    • 선언 : Map<String, Integer> intMap / key 타입과 value 타입을 지정
    • 생성 : new HashMap<>();
    • 추가 : intMap.put({추가할 key값},{추가할 value값})
    • 조회 : intMap.get({조화할 key값})
    • 전체 key 조회 : intMap.keySet()
    • 전체 value 조회 : intMap.Values()
    • 삭제 : intMap.remove({삭제할 key값})
HashMap : 중복을 허용하지 않고 순서를 보장하지 않음, 키와 값을 null 이 허용

TreeMap : Key 값을 기준으로 정렬을 할 수 있다. 다만, 저장 시 정렬(오름차순)을 하기에 저장시간이 다소 오래 걸림

 

회고

오늘은 복습과 개인 과제를 작성을 하면서 머리를 많이 쓴 탓인지 집중력이 최악이였다. 그래도 끝까지 열심히 해보자 하는 마음으로 계속 하였지만 집중력이 최악인지라 제대로 하는 것 같지 않았다. 새로운 걸 해보자고 해서 이것저것 시도를 하였지만 역시 결과는 어우,,,

바로 튜터님께 달려가 질문을 했다. 튜터님께서는 내 말을 듣고 이럴 때는 머리에 쉬는 시간을 줄 필요가 있다라고 말씀해주셨다. 그리고는 튜터님께서 오늘 집중력이 떨어진 이유는 그만큼 열심히 했기 때문이라고 해주셨고 열심히 했으니 과감하게 머리에 쉬는 시간을 주라고 말해주셨고 오늘은 그렇게 아쉽지만 학습을 종료하였다. 내일부터는 머리에 쉬는 시간을 틈틈히 주면서 끝까지 집중하는 것을 목표로 할 예정이다.