여러 원소들을 담을 수 있는 자료구조를 뜻한다. 즉 객체들의 집합? 느낌으로 생각하면 될 것 같다.
오늘은 ArrayList
- Set
- Map
- Stack
- Queue
- ArrayDeque
순으로 가볍게 사용법과 장/단점 정도? 만 포스팅을 하려고 한다.
크기가 고정된 배열과 달리, 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<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
가 남아있지만 내일 정리 할 예정이다.
할 게 너무너무너무너무너무 많아..
<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 에 대해서 공부를 할 예정이다.
파이팅~~!!