어제 곱창을 먹고 오늘 아침에도 남은 곱창에 밥을 먹었다
얼굴이 띵띵
DB의 CRUD를 다루는 기능을 제공하는 java.util
패키지
인터페이스임.
List - 순서가 있고 중복 허락
Set - 순서가 없고 중복 허락 X
Map - Key와 대응된 Value로 이루어짐.
각 요소를 Node로 정의하고 현재 Node에는 다음 Node의 주소 값과 현재 자신의 값을 저장.
데이터를 추가하고 삭제할 때는 다음 Node를 참조하는 주고 값만 바꾸면 되기에 O(1)의 시간 복잡도를 갖는다.
ArrayList는 조회에 특화
LinkedList는 수정에 특화
ArrayList에서 index를 이용한 반복문으로 삭제하는 로직을 구현할 때,
사이즈가 줄어드는 것에 ⚠주의⚠
remove함수를 통해 요소를 삭제하면 size가 줄어들게 됨.
List<Integer> list = new ArrayList<>();
Random rand = new Random();
for(int i = 0; i < 10; i++){
list.add(rand.nextInt(20));
}
for(int i = 0; i < list.size(); i++){
if(list.get(i) % 2 == 0){
list.remove(i);
}
}
비슷한 개념으로, for-each 구문에도 ArrayList의 size가 변하는 로직은 지양.
Key와 Value를 하나의 Entry로 묶어서 관리
entrySet()과 keySet()은 Set으로 관리됨.
요소를 특정 기준으로 내림차순 또는 오름차순으로 배치하는 것
크기를 비교할 수 있는 요소를 가지는 Collection들만 가능
일반적으로 우리가 만든 객체는 비교할 수 없다.
그래서 비교할 수 있게 만들어 줘야 한다.
객체를 비교 가능한 상태로 만들기
class Person implements Comparable<Person>{ // Comparable<T> 인터페이스 구현
String name;
int age;
...
@Override
public int compareTo(Person o) {
return this.name.compareTo(o.name);
}
위는 사람을 이름 순으로 비교 가능하게 만든 코드다.
Comparable이라는 인터페이스의 compareTo(T t) 메서드를 재정의 하면 된다.
1회성으로 정렬하기
Collections.sort(list, new Comparator<Person>(){
@Override
public int compare(Person o1, Person o2){
return o1.name.compareTo(o2.name);
}
});
이렇게 비교 가능한 객체로 만들기 보단
이 순간에만 정렬할 수 있게 만들 수 있다.
어려운 내용이 없어서 다행이다.