Collection, List, Set, Map
Collection 인터페이스의 메서드
List는 순서를 유지하고, 중복을 허용한다.
Set은 순서가 없고, 중복도 허용하지 않는다. 리스트와 완전히 반대다.
Map은 순서가 없고, key는 중복을 허용하지 않고, value는 중복을 허용한다.
그리고, List와 Set 인터페이스에서 공통부분을 뽑아서 만든 것이 Collection인터페이스다.
먼저, Collection인터페이스의 메서드다.
추가하는 add()메서드와, 삭제하는 remove()메서드를 가지고 있다.
그리고 전체 삭제를 하는 clear()메서드도 가지고 있다.
isEmpty()는 비어있는지 확인하는 것이고,
size()는 저장된 객체의 개수를 반환한다.
그리고, contains()는 특정객체를 가지고 있는지 검색및 확인할 때 사용한다.
이외에도 많은 메서드들이 있다.
가볍게 보는정도로 보면 된다.
List인터페이스 - 순서O, 중복O
List인터페이스는 저장한값의 순서가 유지가되고, 저장한값의 중복이 허용된다.
List인터페이스를 구현한 클래스는 여러개가 있는데,
Vector와 ArrayList는 거의 같은것인데, Vector는 옛날것이고, ArrayLIst는 비교적 최신것으로 Vector를 개선한 것이다.
여기서는 핵심이 ArrayList와 LinkedList이다.
List인터페이스가 가지고있는 메서드를 보면 컬렉션인터페이스가 가진 메서드와 비슷하다.
add(), addAll() 메서드로 객체를 추가할 수 있고,
remove()메서드로는 객체를 삭제할 수 있다.
get()은 객체를 읽어오는 것이고, set()은 객체를 변경하는 것이다.
그리고, IndexOf()는 어떤 객체가 몇번째에 저장되어있는지 찾을때 사용한다. (왼쪽에서 오른쪽으로 찾는다.)
lastIndex()는 반대로 (오른쪽끝에서 왼쪽으로 찾는다.)찾는 방향만 다르고 동일하다.
sort()는 지정된 비교자로 List를 정렬한다.
subList()는 전체에서 일부만 뽑아낸다. from~to 이다.
그리고 위의 표에서 Collection인터페이스들의 메서드들은 제외했다.
List인터페이스와 Set인터페이스는 Collection인터페이스의 자손이기때문에, Collection인터페이스가 가진 모든 메서드들을 가지고 있다. 그리고 추가적으로 위의 표에있는 메서드들이 더 있는 것이다.
Set인터페이스 - 순서X, 중복X
Set인터페이스는 List인터페이스와 완전히 반대다.
Set인터페이스를 구현하고 있는 대표적인 Collection클래스는 HashSet과 TreeSet이 있다.
Set인터페이스가 가지고 있는 메서드는 Collection인터페이스와 동일하다.
다만, Set은 집합이기때문에, 집합과 관련된 메서드가 추가적으로 있다.
합집합, 차집합, 부분집합, 교집합등과 관련된 메서드들이 있다.
집합관련 메서드들의 특징으로는, boolean값을 반환한다는 것이다.
이 메서드들을 호출한 다음에, Collection에 변화가 있으면 true, 없으면 false를 반환한다.
즉, 우리가 합집합, 차집합, 부분집합, 교집합등을 구해야 할 때는,
HashSet이나 TreeSet클래스를 이용하면 쉽게 구할 수 있다.
Map인터페이스 - 순서X, 중복(키X, 값O)
Map인터페이스는 순서는 없고, key는 중복을 허용하고, value는 중복을 허용하지 않는다.
Map인터페이스를 구현한 클래스들이 여러개 있는데,
HashMap과 TreeMap이 핵심이다.
HashMap은 원래 순서가 없는데,
LinkedHashMap은 LinkedHashMap은 서로 연결되어 있으므로, 순서가 있다.
그리고, Hashtable은 HashMap의 옛날버전인데, 동기화부분에서 차이가 있다.
Hashtable은 동기화되어있고, HashMap은 동기화되어있지 않다. 대신 따로 동기화 처리할 수 있는 방법이 제공된다.
이 점은 13장에서 쓰레드를 공부할 때 자세히 다뤄보도록 할 것이다.
Map인터페이스의 메서드에 있는 메서드들이다.
Map인터페이스를 구현한 Collection클래스에 객체를 추가할 때는
put(), putAll()같은 메서드를 사용한다. 저장할 때, key와 value를 같이 저장한다.
remove()는 삭제하는 메서드이다.
그리고 Map인터페이스에는 entrySet(), keySet(),values()같은 메서드들이 있는데,
이것들은, Map에 저장되있는 데이터를 읽어오기 위한 것인데,
keySet()이라는 메서드를 호출하면, Map에 저장되어있는 Key만 전부 읽어온다.
그리고 value만 읽어올 때는, values()를 사용하면 된다.
즉, key와 value를 따로 불러올 수 있다.
key아 value의 쌍을 Entry라고 부르고,
Map에 저장된 모든 Entry를 읽어올 때 사용하는 것이 바로, entrySet()이다.
key와 value를 하나로 묶은 객체를 Set으로 반환한다.
values()는 반환타입이 Collection이다.
이것이 무슨 뜻이냐면, 순서가 있어도 되고 없어도 되고, 중복도 있어도 없어도 된다라는 뜻이다.
Collection의 자손이 List와 Set인데, 어떤 결과로 와도 된다는 뜻이다.
'JAVA' 카테고리의 다른 글
LinkedList (0) | 2022.04.28 |
---|---|
ArrayList (0) | 2022.04.28 |
컬렉션 프레임웍과 핵심 인터페이스 (0) | 2022.04.27 |
형식화 클래스 SimpleDateFormat (0) | 2022.04.27 |
형식화 클래스 DecimalFormat (0) | 2022.04.26 |
댓글
이 글 공유하기
다른 글
-
LinkedList
LinkedList
2022.04.28 -
ArrayList
ArrayList
2022.04.28 -
컬렉션 프레임웍과 핵심 인터페이스
컬렉션 프레임웍과 핵심 인터페이스
2022.04.27 -
형식화 클래스 SimpleDateFormat
형식화 클래스 SimpleDateFormat
2022.04.27