728x90
0. List ์ธํฐํ์ด์ค ํน์ง
- Collection ์ธํฐํ์ด์ค๋ฅผ ์์๋ฐ๋๋ค.
- ์์์ ์ค๋ณต์ ํ์ฉํ๋ค.
- ์ธ๋ฑ์ค ์์๋ก ์ ์ฅ๋๋ค. (sequence)
- null ์์๋ฅผ ํ์ฉํ๋ค.
Unmodifiable List
- List.of ํน์ List.copyOf ์ ์ ํฉํ ๋ฆฌ ๋ฉ์๋๋ฅผ ํตํด ์์ ๋ถ๊ฐ๋ฅํ List๋ฅผ ์ฌ์ฉํ ์ ์๋ค.
- ์ฝ์ , ์ญ์ , ๋ณ๊ฒฝ ๋ถ๊ฐ → ์ํํ๋ ๊ฒฝ์ฐ UnsupportedOperationException์ด ๋ฐ์ํ๋ค.
- null ์์๋ฅผ ํ์ฉํ์ง ์๋๋ค.
1. List ์ธํฐํ์ด์ค์ ๊ตฌํ
- ArrayList
- LinkedList
- Vector
๋ฐฐ์ด๊ณผ List ์ธํฐํ์ด์ค์ ์ฐจ์ด
๋ฐฐ์ด | List ์ธํฐํ์ด์ค |
๋ฐฐ์ด์ ํฌ๊ธฐ๋ฅผ ์ฒ์ ์ ์ธ ์ดํ๋ก ๋ณ๊ฒฝํ ์ ์์ | List์ ๊ธธ์ด๊ฐ ๊ฐ๋ณ์ |
๋ฉ๋ชจ๋ฆฌ์ ์ฐ์์ ์ผ๋ก ํ ๋น | ๋ฉ๋ชจ๋ฆฌ์ ์ฐ์์ ์ผ๋ก ํ ๋น โ ๊ฐ ๋ฐ์ดํฐ๊ฐ ์ฃผ์๋ก ์ฐ๊ฒฐ๋์ด ์์ |
ํน์ index์ ์์๋ฅผ ์ญ์ ํ๋ฉด ํด๋น index์๋ ๋น๊ณต๊ฐ์ด ๋จ์ | ๋ฐ์ดํฐ ์ฌ์ด์ ๋น๊ณต๊ฐ์ด ์์(ํ์ฉํ์ง ์์) |
- ์ฒ์์ ๋ช๊ฐ์ ์์๊ฐ ์ถ๊ฐ๋ ์ง ์ ์ ์๋ ๊ฒฝ์ฐ ๋ฐฐ์ด์ ์ฌ์ฉํ๋ ๊ฒ์ด ์ข๋ค.
- ์์์ ์ฝ์ , ์ญ์ ๊ฐ ๋น๋ฒํ ๊ฒฝ์ฐ์๋ List๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ด ์ข๋ค.
2. List์ ๊ธฐ๋ณธ ๋ฉ์๋
return value | method | description |
int | size() | List์ ์์ ๊ฐ์๋ฅผ ๋ฐํํ๋ค. ์์ ์๊ฐ Integer.MAX_VALUE ์ด์์ด๋ฉด Integer.MAX_VALUE ๋ฐํํ๋ค. |
boolean | isEmpty() | List์ ์์๊ฐ ํฌํจ๋์ด ์์ง ์๋ค๋ฉด true๋ฅผ ๋ฐํํ๋ค. |
boolean | contains(Object o) | List์ ์ง์ ๋ ์์๊ฐ ํฌํจ๋์ด ์๋ค๋ฉด true๋ฅผ ๋ฐํํ๋ค. |
Iterator<E> | iterator() | List๋ฅผ ์ํํ ์ ์๋ Iterator๋ฅผ ๋ฐํํ๋ค. |
Object[] | toArray() | List์ ๋ชจ๋ ์์๋ฅผ ํฌํจํ๋ ๋ฐฐ์ด์ ๋ฐํํ๋ค. ๋ฐ๋: Arrays.asList(Object[]) |
boolean | add(E e) | List์ ๋์ ์๋ก์ด ์์๋ฅผ ์ถ๊ฐํ๋ค. ์ผ๋ถ List์ ๊ตฌํ์ฒด๋ null ์์ ์ถ๊ฐ๊ฐ ์ ํ๋์ด ์๋ค. |
boolean | remove(Object o) | ์ง์ ํ ์์๊ฐ ์๋ ๊ฒฝ์ฐ List์์ ์ง์ ํ ์์์ ์ฒซ๋ฒ์งธ๋ฅผ(๊ฐ์ฅ ๋ฎ์ ์ธ๋ฑ์ค) ์ ๊ฑฐํ๋ค. List์ ์ง์ ํ ์์๊ฐ ํฌํจ๋์ด ์์ง ์๋ค๋ฉด ์๋ฌด๋ฐ ์์
์ ํ์ง ์๋๋ค. List์ ์ง์ ํ ์์๊ฐ ์๋ ๊ฒฝ์ฐ true๋ฅผ ๋ฐํํ๋ค. |
boolean | containsAll(Collection<?> c) | List์ ์ง์ ๋ Collection์ ๋ชจ๋ ์์๊ฐ ํฌํจ๋์ด ์์ผ๋ฉด true๋ฅผ ๋ฐํํ๋ค. |
boolean | addAll(Collection<? extends E> c) | ์ง์ ๋ Collection์ Iterator๊ฐ ๋ฐํํ๋ ์์๋๋ก ๋ชจ๋ ์์๋ฅผ List์ ๋์ ์ถ๊ฐํ๋ค. List๊ฐ ๋ณ๊ฒฝ๋๋ฉด true๋ฅผ ๋ฐํํ๋ค. |
boolean | addAll(int index, Collection<? extends E> c) | ์ง์ ๋ index์ ์ง์ ๋ Collection์ Iterator๊ฐ ๋ฐํํ๋ ์์๋๋ก ๋ชจ๋ ์์๋ฅผ ์ถ๊ฐํ๋ค. |
boolean | removeAll(Collection<?> c) | ์ง์ ๋ Collection์ ํฌํจ๋ ๋ชจ๋ ์์๋ฅผ List์์ ์ ๊ฑฐํ๋ค. |
boolean | retainAll(Collection<?> c) | ์ง์ ๋ Collection์ ํฌํจ๋ List์ ์์๋ง ์ ์งํ๋ค. ์ฆ, List์์ ์ง์ ๋ Collection์ ํฌํจ๋์ง ์์ ๋ชจ๋ ์์๋ฅผ ์ ๊ฑฐํ๋ค. |
void | sort(Comparator<? super E> c) | Comparator์์ ์ ์ํ๋๋ก List๋ฅผ ์ ๋ ฌํ๋ค. Comparator๊ฐ null์ธ ๊ฒฝ์ฐ ์์์ Comparable ์ธํฐํ์ด์ค๊ฐ ๊ตฌํ๋์ด ์์ด์ผ ํ๋ฉฐ ์์ฐ ์์๋ฅผ ์ฌ์ฉํด์ผ ํ๋ค. |
void | clear() | List์์ ๋ชจ๋ ์์๋ฅผ ์ ๊ฑฐํ๋ค. |
E | get(int index) | ํน์ index์ ์๋ List์ ์์๋ฅผ ๋ฐํํ๋ค. |
E | set(int index, E element) | ํน์ index์ ์๋ List์ ์์๋ฅผ ์ง์ ๋ ์์๋ก ๋ณ๊ฒฝํ๋ค. |
void | add(int index, E element) | ํน์ index์ ์ง์ ๋ ์์๋ฅผ ์ฝ์ ํ๋ค. ์ดํ ์์๋ค์ ์ค๋ฅธ์ชฝ์ผ๋ก ์ด๋ํ๋ค. |
E | remove(int index) | ํน์ index์ ์์๋ฅผ ์ ๊ฑฐํ๋ค. ์ดํ ์์๋ค์ ์ผ์ชฝ์ผ๋ก ์ด๋ํ๋ค. ์ ๊ฑฐ๋ ์์๋ฅผ ๋ฐํํ๋ค. |
int | indexOf(Object o) | List์์ ์ง์ ๋ ์์๊ฐ ์ฒ์์ผ๋ก ๋ํ๋๋ ์ธ๋ฑ์ค๋ฅผ ๋ฐํํ๋ค. List์ ์์๊ฐ ์์ผ๋ฉด -1 ๋ฐํํ๋ค. |
int | lastIndexOf(Object o) | List์์ ์ง์ ๋ ์์๊ฐ ๋ง์ง๋ง์ผ๋ก ๋ฐ์ํ ์ธ๋ฑ์ค๋ฅผ ๋ฐํํ๋ค. |
3. ArrayList
- ๋ด๋ถ์ ์ผ๋ก ๋ฐฐ์ด๋ก ๊ตฌํ
public ArrayList(int initialCapacity) {
if (initialCapacity > 0) {
this.elementData = new Object[initialCapacity];
} else if (initialCapacity == 0) {
this.elementData = EMPTY_ELEMENTDATA;
} else {
throw new IllegalArgumentException("Illegal Capacity: "+
initialCapacity);
}
}
- null ์์ ํ์ฉ
- ์๊ฐ๋ณต์ก๋
- ์ฝ์ , ์ญ์ - O(N)
- ์กฐํ - O(1)
- ArrayList์ ์ธ์คํด์ค์๋ capacity๊ฐ ์ ํด์ ธ ์๋ค. ์์๊ฐ ์ถ๊ฐ๋ ๋ ์๋์ผ๋ก capacity๊ฐ ์ฆ๊ฐ๋๋ค.
- ์ด๊ธฐ capacity
private static final int DEFAULT_CAPACITY = 10;
- ๋๊ธฐํ๋ฅผ ๋ณด์ฅํ์ง ์๋๋ค.
- ๋๊ธฐํ๋ฅผ ๋ณด์ฅํ๊ธฐ ์ํด ๋ค์๊ณผ ๊ฐ์ด Wrappingํ์ฌ ์ฌ์ฉํ ์ ์๋ค.
List list = Collections.synchronizedList(new ArrayList(...));
- ์ด ๊ตฌํ์ฒด์ iterator์ listIterator๋ fail-fastํ๋ค. → List๊ฐ ๋์์ ๊ตฌ์กฐ์ ์ผ๋ก ์์ ๋๋ฉด ConcurrentModificationException ์์ธ๋ฅผ ๋์ง๋ค.
4. LinkedList
- List์ Deque ์ธํฐํ์ด์ ์ด์ค์ฐ๊ฒฐ๋ฆฌ์คํธ ๊ตฌํ
/**
* Pointer to first node.
*/
transient Node<E> first;
/**
* Pointer to last node.
*/
transient Node<E> last;
- null ์์ ํ์ฉ
- ์๊ฐ๋ณต์ก๋
- ์ฝ์ , ์ญ์ - O(1)
- ์กฐํ - O(N)
- ๋๊ธฐํ๋ฅผ ๋ณด์ฅํ์ง ์๋๋ค.
- ๋๊ธฐํ๋ฅผ ๋ณด์ฅํ๊ธฐ ์ํด ๋ค์๊ณผ ๊ฐ์ด Wrappingํ์ฌ ์ฌ์ฉํ ์ ์๋ค.
List list = Collections.synchronizedList(new LinkedList(...));
- ์ด ๊ตฌํ์ฒด์ iterator์ listIterator๋ fail-fastํ๋ค. → List๊ฐ ๋์์ ๊ตฌ์กฐ์ ์ผ๋ก ์์ ๋๋ฉด ConcurrentModificationException ์์ธ๋ฅผ ๋์ง๋ค.
728x90
'๊ฐ๋ฐ > Java' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Java] ์ถ์ํด๋์ค์ ์ธํฐํ์ด์ค (0) | 2023.04.26 |
---|---|
[Java] Collection Framework - Set์ ๊ตฌํ์ฒด(๊ธฐ๋ณธ) (0) | 2023.04.25 |
[Java] Collection Framework - Map์ ๊ตฌํ์ฒด(์ฌํ) (0) | 2023.04.21 |
[Java] Collection Framework - Map์ ๊ตฌํ์ฒด(๊ธฐ๋ณธ) (2) | 2023.04.21 |