본문 바로가기
백엔드

자바 컬렉션과 제네릭스 (무작정 메모)

by DR BOY 2021. 11. 11.

Collection은 객체를 모아놓는 것. 배열보다 훨씬 더 많은 기능이 있고 특징이 다르다.

삭제, 삽입, 동적 할당, 크기 변동, 다형성 적용 등

 

#List <= 객체를 모음 저장하며 index와 순서 가지며 중복 저장을 허용함

#ArrayList <= 배열의 특성을 가지고 있으며 크기가 원하는대로 변함 

->인덱스때문에 속도측면에서 느리다.  ex)값이 중간에 삭제/추가되는 경우

#LinkedList <= 연결리스트, ArrayList보다 빠르다

https://www.nextree.co.kr/p6506/ (자료 참조)

-Generic을 통해서 원하는 타입을 모아놓을 수 있다.

List<String> nick = new ArrayList<>();

 

<객체 추가 메서드>

nick.add("멍멍이");

<인덱스 참조 메서드>

nick.get(1);

<리스트 크기 반환>

nick.size();

<인덱스 수정 메서드>

nick.set(2, "Something");

<객체 존재유무>

nick.contains("Something");

<전체삭제>

nick.clear();

<비어있는지>

nick.isEmpty();

<한번에 객체 많이 추가하기>

Collections.addAll(부모(super)리스트, 값, 값, 값, 값);

<등장횟수 구하기>

Collections.frequency(super, 값);

Collections.min, max (최대최소)

<정렬>

Collections.sort

<무작위>

Collection.shuffle

<원하는 값으로 초기화>

Collections.fill

 

    #Set <= 집합을 구현해놓은 클래스, 중복 허용하지 않음

     #Hash 

 - 어떤 값을 넣었을 때 전혀 예측하지 못할 값이 생성되어야 하는 알고리즘.

 - 예측할 수 없는 값을 이용하기 때문에 정렬이 불가능.

 - 생성된 값으로 원래 값을 찾는 것도 불가능에 가깝다.

 - 다시 원래 값으로 돌아갈 수 없는 단방향성 알고리즘.

 - 속도가 빠르고 보안성이 뛰어난 알고리즘. 

=============================

LinkedList

//LIFO -> last in first out -> stack

//push, pop, peek

list.push("김뽀삐"); //앞에서부터 추가

System.out.println(list);



System.out.println(list.pop()); //삭제하면서 읽기

System.out.println(list);



System.out.println(list.peek()); //삭제하지 않으면서 읽기

System.out.println(list);



//FIFO -> first in first out -> Queue

//offer, poll, peek

list.offer("a"); //마지막에 추가

list.offer("b");

list.offer("c");

System.out.println(list);



System.out.println(list.poll());

System.out.println(list);



System.out.println(list.peek()); //삭제하지 않고 읽기



System.out.println(list);

댓글