(Java) Collection

전성영·2022년 5월 19일
0

Collection이란?

여러 원소들을 담을 수 있는 자료구조를 뜻한다. 즉 객체들의 집합? 느낌으로 생각하면 될 것 같다.

오늘은 ArrayList - Set - Map - Stack - Queue - ArrayDeque 순으로 가볍게 사용법과 장/단점 정도? 만 포스팅을 하려고 한다.

ArrayList란?

크기가 고정된 배열과 달리, ArrayList는 새 요소가 추가될 때 자동으로 크기를 늘리는 것. 즉 동적 배열이다.

선언

List<Integer> integerList = new ArrayList<>();

ArrayList<Integer> num3 = new ArrayList<>(10);//초기 용량(capacity)지정

두 가지 방법으로 선언을 하였는데 다른점은 바로 앞에 있다.
List는 interface 이고, ArrayList는 클래스 이다.

즉 List로 하는 게 좀 더 유연하다고 생각하면 되는데,

새 bird = new 비둘기();
비둘기 gugu = new 비둘기();

라고 생각하면 이해하기 쉬울 것이다.

삽입

arraylist.add(10);
arraylist.add(5);

add() - 괄호 안에 집어넣고 싶은 값을 써준다.

출력

System.out.println(arraylist);

System.out.println(arraylist.get(0));     //0번째 index 출력

를 해주면 출력이 된다.
다만 하나씩 index에 접근하면서 꺼내야 그 데이터를 활용할 수 있다.

index에 접근하는 방법은 get()을 사용하면 된다.

정렬

Collections.sort(arraylist);              

sort도 되게 간단한 것 같다. 하지만 c++을 버릴 순 없어..

크기

System.out.println(arraylist.size())

size()를 통해 크기를 얻을 수 있다.

제거

arraylist.remove(1);                  
arraylist.clear();                    

값을 삭제하는 함수들이다.
remove() - ()안에 index값을 넣어줘야한다.
clear() - 모든 값을 삭제하는 무시무시한 함수이다,,

그 외

System.out.println(integerList.contains(1)); 
System.out.println(integerList.indexOf(1)); 

contain() - list에 괄호 안의 값이 있는지 검색한다 T/F 반환.
indexOf() - list에서 1이 있으면 해당 index값을 반환한다. 없으면 -1 반환.

Set이란?

Set은 한국말로는 "집합"이다.
중복값 허용하지 않고, 순서가 유지되지 않는다.
중복되지 않는 숫자(데이터)를 구할 때 사용하면 유용하다.

선언

Set<String> stringSet = new HashSet<>();

삽입

stringSet.add("LasVegas");

ArrayList와 같은 add() 함수를 사용하여 데이터를 집어넣는다.

삭제

stringSet.remove("Seoul");
stringSet.clear();

ArrayList같은 경우는 index로 접근해서 삭제했지만 이 친구는 그냥 지목해서 삭제한다.
왜냐 index가 없어서. 아주 쿨한 친구야
clear()는 전체삭제!

출력

Iterator<String> iterSet = stringSet.iterator();
while(iterSet.hasNext()) {
    System.out.println(iterSet.next());
}

size() 를 통한 for문

이렇게 두 가지가 있는데 속도는 size() 를 통해 값을 뽑아내는 방법이 빠르다고 한다!

크기

System.out.println(stringSet.size())

size()를 통해 크기를 얻을 수 있다.

그 외

System.out.println(stringSet.contains(1)); 
System.out.println(stringSet.isEmpty()); 

contain() - stringSet에 괄호 안의 값이 있는지 검색한다. T/F 반환.
isEmpty() - stringSet에서 값 존재 유무를 파악한다. T/F 반환.

set에 있는 데이터들을 정렬하고 싶다면

List<?> sortedList = new ArrayList<>(yourHashSet);

이런식으로 list를 선언할 때 Set을 넣어준 후 sort를 해주는 것이 좋다.

마지막으로 Map을 정리하려고 한다.
Stack , Queue, ArrayDeque 가 남아있지만 내일 정리 할 예정이다.
할 게 너무너무너무너무너무 많아..

Map

<key, value> 가 한 쌍으로 이루어진 자료형이다.

Key값은 중복이 불가능하고 동일한 Key값으로 값을 넣을 시 최근에 넣은 값이 적용된다!

선언

Map<Integer, String> map = new HashMap<>();

앞 - Key값의 자료형, 뒤 - Value값의 자료형이다.

삽입

map.put(1, "apple");
map.put(2, "berry");

put()으로 자료형에 맞게 데이터들을 넣어준다.

삭제

map.remove(2);
map.clear();

삭제 또한 Key값으로 이루어져 있다.
clear()은 무자비하게 다 삭제한다.

출력

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

get()을 사용해서 index를 통해 값을 가져오는 list와 달리 key값을 통해 값을 가져온다.

크기

map.size()

size()를 통해 크기를 확인한다.

변경

map.replace(1, "빛날 희"); 를 통해 값을 변경할 수 있다.

그 외

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

containsKey() - 키 값으로 있나 없나 T/F 반환.
containsValue() - value 값으로 있나 없나 T/F 반환.

내일부턴 본격적으로 SpringBoot 에 대해서 공부를 할 예정이다.
파이팅~~!!

profile
Slow and Steady

0개의 댓글