Iterator<E>
ArrayList, ArrayDeque, LinkedList 등 Iterable을 구현하는 클래스들은 Iterator를 사용할 수 있다.
Iterator는 collection을 순환하기 위해 만들어졌다.
메소드 | 설명 |
hasNext() | 반복자에 다음 요소가 있는지 없는지 |
next() | 반복자의 다음 요소 반환 |
remove() | next()에 반환된 마지막 요소 삭제 |
예시
class Main {
public static void main(String[] args) {
ArrayList<Double> arr = new ArrayList<>();
for (int i = 0; i < 10; i++) {
arr.add(Math.random());
}
Iterator<Double> it = arr.iterator();
while (it.hasNext()) {
Double d = it.next();
System.out.println(d);
if (d < 0.5)
it.remove();
}
System.err.println();
for (Double d : arr) {
System.out.println(d);
}
}
}
Stream<T>
Stream은 데이터 타입에 상관 없이 데이터 모음에 자주 사용되는 메소드들을 정의해놓은 인터페이스이다.
메소드 | 설명 |
allMatch(Predicate<? super T> predicate) | 모든 요소가 predicate를 만족하는지 아닌지 |
anyMatch(Predicate<? super T> predicate) | 어떤 요소가 predicate를 만족하는지 아닌지 |
count() | 요소의 크기 반환 |
distinct() | Object.equals(Object)로 같은 요소는 제거된 Stream<T>반환 |
filter(Predicate<? super T> predicate) | predicate를 만족하는 요소들로 구성된 Steam<T> 반환 |
findAny() | Optional<T>반환 |
findFirst() | Optional반환 |
forEach(Consumer<? super T> action | 각 요소마다 액션을 취한다. |
sorted() | 정렬된 Stream<T> 반환 |
1. ArrayList<E>
크기조정 가능한 배열인 List 인터페이스의 구현이다.
불러오기 & 선언
import java.util.ArrayList;
ArrayList<Integer> arr = new ArrayList<Integer>();
ArrayList<String> cars = new ArrayList<String>();
ArrayList 요소는 reference type으로 지정해야한다. primitive type은 지정할 수 없다.
메소드 | 설명 |
add(E element) add(int index, E element) addFirst(E element) addLast(E element) |
리스트 마지막에 요소를 추가한다 명시된 인덱스에 요소를 추가한다 리스트 처음에 요소를 추가한다 리스트 마지막에 요소를 추가한다 |
addAll(Collection<? extends E> c) addAll(int index, Collection<? extends E> c) |
리스트 마지막에 collection의 모든 요소들을 추가한다 명시된 리스트에 collection의 모든 요소들을 추가한다 |
clear() | 리스트에서 모든 요소를 제거한다 |
clone() | 리스트 인스턴스를 얕은 복사해 반환 |
contains(Object o) | 명시된 요소를 리스트가 포함하는지 아닌지 |
equals(Object o) | 명시된 객체와 리스트가 똑같은지 아닌지 |
forEach(Consumer<? super E> action) | 지정된 행동을 각 요소마다 반복한다. lambda식도 행동으로 지정 가능하다 |
get(int index) getFirst() getLast() |
명시된 인덱스의 요소를 반환한다 첫번째 요소를 반환한다 마지막 요소를 반환한다 |
indexOf(Object o) lastIndexOf(Object o) |
명시된 요소가 첫번째로 나타나는 인덱스 반환. 없다면 -1 반환 명시된 요소가 리스트에 마지막으로 나타나는 인덱스 반환. 없다면 -1 반환 |
isEmpty() | 리스트가 비어있는지 아닌지 |
iterator() | 리스트의 반복자 Iterator<E>를 반환 |
listIterator() listIterator(int index) |
리스트의 리스트 반복자 ListIterator<E> 반환 명시된 인덱스부터 시작하는 리스트 반복자 ListIterator<E> 반환 |
remove(int index) remove(Object o) removeFisrt() removeLast() |
명시된 인덱스의 요소 제거 명시된 요소의 첫번째 존재를 제거 첫 요소를 제거해 반환 마지막 요소를 제거해 반환 |
removeAll(Collection<?> c) | 명시된 collection에 포함된 모든 요소를 리스트에서 제거 |
removeIf(Predicate<? super E> filter) | 주어진 predicate에 만족하는 요소를 모두 제거. lambda식도 가능하다 |
retainAll(Collection<?> c) | 명시된 collection에 있는 요소들만 유지하고 나머지는 제거한다 |
set(int index, E element) | 명시된 인덱스에 명시된 요소로 바꾼다 |
size() | 리스트에 있는 요소의 수를 반환 |
subList(int fromIndex, int toIndex) | fromIndex이상 toIndex미만 인덱스의 요소들을 부분리스트 List<E> 로 반환 |
toArray() | 리스트를 Object[] 형태로 반환 |
sort(Comparator<? super E> c) | 명시된 Comparator에 따라 정렬한다. null이면 사적적으로 정렬한다. lambda식도 사용 가능하다 |
stream() | Stream 반환 |
2. ArrayDeque<E>
크기조정 가능한 배열인 Deque 인터페이스의 구현이다.
불러오기 & 선언
import java.util.ArrayDeque;
ArrayDeque<String> deq = new ArrayDeque<String>();
ArrayDeque는 stack으로 사용할 때 Stack 클래스보다 빠르고, queue로 사용할 때 LinkedList보다 빠르다.
메소드 | 설명 |
add(E element) addFirst(E element) addLast(E element) offer(E element) offerFirst(E element) offerLast(E element) push(E element) |
덱 마지막에 요소를 추가한다 덱 처음에 요소를 추가한다 덱 마지막에 요소를 추가한다 덱 마지막에 요소를 추가한다 덱 처음에 요소를 추가한다 덱 마지막에 요소를 추가한다 덱 처음에 요소를 추가한다 |
addAll(Collection<? extends E> c) | 덱 마지막에 collection의 모든 요소들을 추가한다 |
clear() | 덱에서 모든 요소를 제거한다 |
clone() | 덱 인스턴스를 얕은 복사해 반환 |
contains(Object o) | 명시된 요소를 덱이 포함하는지 아닌지 |
equals(Object o) | 명시된 객체와 덱이 똑같은지 아닌지 |
forEach(Consumer<? super E> action) | 지정된 행동을 각 요소마다 반복한다. lambda식도 행동으로 지정 가능하다 |
getFirst() getLast() |
첫번째 요소를 반환한다 마지막 요소를 반환한다 |
isEmpty() | 덱이 비어있는지 아닌지 |
iterator() descendingIterator() |
덱의 반복자 Iterator<E>를 반환 내림차순의 덱의 반복자 Iterator<E>를 반환 |
peek() peekFirst() peekLast() |
첫번째 요소를 검색해 반환한다. 지우지 않는다 첫번째 요소를 검색해 반환한다. 지우지 않는다. 빈 덱이라면 null반환 마지막 요소를 검색해 반환한다. 지우지 않는다. 빈 덱이라면 null반환 |
poll() pollFirst() pollLast() |
첫번째 요소를 검색해 반환한다. 지운다 첫번째 요소를 검색해 반환한다. 지운다. 빈 덱이라면 null반환 마지막 요소를 검색해 반환한다. 지운다. 빈 덱이라면 null반환 |
remove(Object o) remove() removeFisrt() removeLast() pop() |
명시된 요소의 첫번째 존재를 제거 첫 요소를 제거해 반환 첫 요소를 제거해 반환 마지막 요소를 제거해 반환 첫 요소를 제거해 반환 |
removeFirstOccurrence(Object o) removeLastOccurrence(Object o) |
명시된 요소가 앞에서부터 처음 존재하는것을 제거 명시된 요소가 뒤에서부터 처음 존재하는것을 제거 |
removeAll(Collection<?> c) | 명시된 collection에 포함된 모든 요소를 덱에서 제거 |
removeIf(Predicate<? super E> filter) | 주어진 predicate에 만족하는 요소를 모두 제거. lambda식도 가능하다 |
retainAll(Collection<?> c) | 명시된 collection에 있는 요소들만 유지하고 나머지는 제거한다 |
reversed() | 반대 순서의 Deque<E>를 반환 |
size() | 덱에 있는 요소의 수를 반환 |
toArray() | 덱를 Object[] 형태로 반환 |
stream() | Stream 반환 |
3. LinkedList<E>
이중 연결 리스트이며 List 인터페이스와 Deque 인터페이스의 구현이다.
ArrayList 클래스는 요소가 연속된 저장공간에 저장되어 잦은 조회를 할 때 성능이 좋다.
LinkedList 클래스는 요소가 노드에 저장되고 노드끼리 연결되어 잦은 추가/삭제를 할 때 성능이 좋다.
불러오기 & 선언
import java.util.LinkedList;
LinkedList<String> list1 = new LinkedList<String>();
LinkedList<Integer> list2 = new LinkedList<Integer>();
LinkedList 요소는 reference type으로 지정해야한다. primitive type은 지정할 수 없다.
메소드 | 설명 |
add(E element) add(int index, E element) addFirst(E element) addLast(E element) offer(E element) offerFirst(E element) offerLast(E element) push(E element) |
리스트 마지막에 요소를 추가한다 명시된 인덱스에 요소를 추가한다 리스트 처음에 요소를 추가한다 리스트 마지막에 요소를 추가한다 리스트 마지막에 요소를 추가한다 리스트 처음에 요소를 추가한다 리스트 마지막에 요소를 추가한다 리스트 처음에 요소를 추가한다 |
addAll(Collection<? extends E> c) addAll(int index, Collection<? extends E> c) |
리스트 마지막에 collection의 모든 요소들을 추가한다 명시된 리스트에 collection의 모든 요소들을 추가한다 |
clear() | 리스트에서 모든 요소를 제거한다 |
clone() | 리스트 인스턴스를 얕은 복사해 반환 |
contains(Object o) | 명시된 요소를 리스트가 포함하는지 아닌지 |
equals(Object o) | 명시된 객체와 리스트가 똑같은지 아닌지 |
forEach(Consumer<? super E> action) | 지정된 행동을 각 요소마다 반복한다. lambda식도 행동으로 지정 가능하다 |
get(int index) getFirst() getLast() |
명시된 인덱스의 요소를 반환한다 첫번째 요소를 반환한다 마지막 요소를 반환한다 |
indexOf(Object o) lastIndexOf(Object o) |
명시된 요소가 첫번째로 나타나는 인덱스 반환. 없다면 -1 반환 명시된 요소가 리스트에 마지막으로 나타나는 인덱스 반환. 없다면 -1 반환 |
isEmpty() | 리스트가 비어있는지 아닌지 |
iterator() descendingIterator() |
리스트의 반복자 Iterator<E>를 반환 내림차순의 리스트의 반복자 Iterator<E>를 반환 |
listIterator() listIterator(int index) |
리스트의 리스트 반복자 ListIterator<E> 반환 명시된 인덱스부터 시작하는 리스트 반복자 ListIterator<E> 반환 |
peek() peekFirst() peekLast() |
첫번째 요소를 검색해 반환한다. 지우지 않는다 첫번째 요소를 검색해 반환한다. 지우지 않는다. 빈 리스트라면 null반환 마지막 요소를 검색해 반환한다. 지우지 않는다. 빈 리스트라면 null반환 |
poll() pollFirst() pollLast() |
첫번째 요소를 검색해 반환한다. 지운다 첫번째 요소를 검색해 반환한다. 지운다. 빈 리스트라면 null반환 마지막 요소를 검색해 반환한다. 지운다. 빈 리스트라면 null반환 |
remove(int index) remove(Object o) remove() removeFisrt() removeLast() pop() |
명시된 인덱스의 요소 제거 명시된 요소의 첫번째 존재를 제거 첫 요소를 제거해 반환 첫 요소를 제거해 반환 마지막 요소를 제거해 반환 첫 요소를 제거해 반환 |
removeFirstOccurrence(Object o) removeLastOccurrence(Object o) |
명시된 요소가 앞에서부터 처음 존재하는것을 제거 명시된 요소가 뒤에서부터 처음 존재하는것을 제거 |
removeAll(Collection<?> c) | 명시된 collection에 포함된 모든 요소를 리스트에서 제거 |
removeIf(Predicate<? super E> filter) | 주어진 predicate에 만족하는 요소를 모두 제거. lambda식도 가능하다 |
retainAll(Collection<?> c) | 명시된 collection에 있는 요소들만 유지하고 나머지는 제거한다 |
reversed() | 반대 순서의 LinkedList<E>를 반환 |
set(int index, E element) | 명시된 인덱스에 명시된 요소로 바꾼다 |
size() | 리스트에 있는 요소의 수를 반환 |
subList(int fromIndex, int toIndex) | fromIndex이상 toIndex미만 인덱스의 요소들을 부분리스트 List 로 반환 |
toArray() | 리스트를 Object[] 형태로 반환 |
sort(Comparator<? super E> c) | 명시된 Comparator에 따라 정렬한다. null이면 사적적으로 정렬한다. lambda식도 사용 가능하다 |
stream() | Stream 반환 |
4. HashMap<K,V>
HashMap은 object를 key/value쌍으로 요소를 가지는 자료구조이다.
해시 테이블을 기반으로 한 Map 인터페이스의 구현이다.
불러오기 & 선언
import java.util.HashMap;
HashMap<String, String> capitalCities = new HashMap<String, String>();
메소드 | 설명 |
put(K key, V value) | map에 키/값 쌍을 저장한다 |
putIfAbsent(K key, V value) | 없다면, map에 키/값 쌍을 저장한다 |
putAll(Map<? extends K, ? extends V> m) | 명시된 Map을 map에 키/값 쌍을 저장한다 |
get(Object key) | key에 해당되는 value를 반환. 없다면 null반환 |
remove(Object key) | key에 해당되는 매핑 제거 |
clear() | map에서 모든 매핑 제거 |
clone() | HashMap의 얕은 복사 반환. keys와 values는 복사되지 않음 |
compute(K key, BiFunction<? super K, super V, ? extends V> remappingFunction) computeIfAbsent(K key, BiFunction<? super K, super V, ? extends V> mappingFunction) computeIfPresent(K key, BiFunction<? super K, super V, ? extends V> remappingFunction) |
명시된 key의 value를 BiFunction의 계산값으로 한다. lambda식도 가능하다. 명시된 key와 관련된 value가 없다면 value를 BiFunction의 계산값으로 한다. lambda식도 가능하다. 명시된 key와 관련된 value가 있다면 value를 BiFunction의 계산값으로 한다. lambda식도 가능하다. |
merge(K key, V value, BiFunction<? super V, ? super V, ? extends V> remappingFunction) | 명시된 key와 관련된 value가 없다면 명시된 value로 한다. 있다면 value를 BiFunction의 계산값으로 한다. lambda식도 가능하다. |
containsKey(Object key) | 명시된 key를 포함하는지 아닌지 |
containsValue(Object value) | 명시된 value를 포함하는지 아닌지 |
entrySet() | 집합 Set<Map.Entry<K,V>> 반환 |
keySet() | 집합 Set<K> 반환 |
values() | 값들이 담긴 Collection<V> 반환 |
forEach(BiConsumer<? super K, ? super V> action) | 지정된 행동을 각 엔트리마다 반복한다. lambda식도 행동으로 지정 가능하다 |
isEmpty() | 빈 map인지 아닌지 |
size() | key/value 매핑 개수 반환 |
5. HashSet<E>
해쉬 테이블을 사용해 Set 인터페이스를 구현한 집합 클래스다.
불러오기 & 선언
import java.util.HashSet;
HashSet<String> s1 = new HashSet<>();
메소드 | 설명 |
add(E e) | 명시된 요소를 집합에 추가한다 |
clear() | 모든 요소를 제거한다 |
clone() | 얕은복사 Object를 반환. 값들은 복사되지 않는다 |
contains(Object o) | 명시된 요소가 포함되는지 아닌지 |
isEmpty() | 비어있는지 아닌지 |
iterator() | 반복자 Iterator<E> 반환 |
remove(Object o) | 명시된 요소 제거 |
size() | 집합의 요소 개수 반환 |
toArray() | 집합을 Object[] 형태로 반환 |
stream() | Stream 반환 |
6. PriorityQueue<E>
우선순위 힙을 기반으로 하는 우선순위 큐
불러오기 & 선언
import java.util.PriorityQueue;
PriorityQueue<Integer> pq = new PriorityQueue<>();
메소드 | 설명 |
add(E e) offer(E e) |
명시된 요소를 우선순위 큐에 추가한다 명시된 요소를 우선순위 큐에 추가한다 |
peek() | 큐의 머리를 검색해 반환한다. 지우지 않는다 |
poll() | 큐의 머리를 검색해 반환한다. 지운다 |
clear() | 모든 요소를 삭제한다 |
size() | 요소의 개수를 반환 |
stream() | Stream 반환 |
'Java' 카테고리의 다른 글
Java Regular Expressions (정규 표현식) (0) | 2024.09.20 |
---|---|
Java 콘솔 입출력 (console output & input) (0) | 2024.09.19 |
Java Class (1) | 2024.09.07 |
Java 연산자 우선순위 (Operator Precedence in Java) (0) | 2024.09.06 |
Java 자료형 (Java Data Types) (1) | 2024.09.06 |