λ³Έλ¬Έ λ°”λ‘œκ°€κΈ°
πŸ€ Java/μžλ°”μ™„μ „μ •λ³΅

[Java] μ»¬λ ‰μ…˜ ν”„λ ˆμž„μ›Œν¬ ꡬ쑰, List<E>의 ArrayList<E>, Vector<E>, LinkedList<E> 차이점

by ._.sori 2025. 6. 18.

 

 

 

πŸ“š μ°Έκ³ ν•œ μ±…

 

: 좜처 예슀24 ν™ˆνŽ˜μ΄μ§€

 

 

- 기본적인 κ°œλ…μ„ μ •λ¦¬ν•˜κ³  μΆ”κ°€μ μœΌλ‘œ κΆκΈˆν•œ 것듀을 μ •λ¦¬ν–ˆμŠ΅λ‹ˆλ‹€ -

 

 

πŸ₯ πŸ₯ πŸ₯

 


 

βœ”οΈ   μ»¬λ ‰μ…˜ ν”„λ ˆμž„μ›Œν¬_ 624p

 

• μ»¬λ ‰μ…˜(collection)

: λ™μΌν•œ νƒ€μž…μ„ λ¬Άμ–΄ κ΄€λ¦¬ν•˜λŠ” 자료ꡬ쑰둜 λ°μ΄ν„°μ˜ μ €μž₯ μš©λŸ‰μ„ λ™μ μœΌλ‘œ 관리할 수 μžˆλ‹€.

 

• ν”„λ ˆμž„μ›Œν¬(framework)

: μ„€κ³„μ˜ 원칙 λ˜λŠ” ꡬ쑰에 따라 클래슀 λ˜λŠ” μΈν„°νŽ˜μ΄μŠ€λ₯Ό μ„€κ³„ν•˜κ³ , μ„€κ³„λœ ν΄λž˜μŠ€μ™€ μΈν„°νŽ˜μ΄μŠ€λ₯Ό λ¬Άμ–΄ 놓은 κ°œλ…μ΄λ‹€.

 

• μ»¬λ ‰μ…˜ ν”„λ ˆμž„μ›Œν¬

: 리슀트, μŠ€νƒ, 큐, 트리 λ“±μ˜ μžλ£Œκ΅¬μ‘°μ— μ •λ ¬, 탐색 λ“±μ˜ μ•Œκ³ λ¦¬μ¦˜μ„ ꡬ쑰화해 놓은 ν”„λ ˆμž„μ›Œν¬

 

좜처: https://opentutorials.org/module/2495/14159

 

 

Q. μ»¬λ ‰μ…˜κ³Ό λ°°μ—΄μ˜ 차이점은?

A. 배열은 생성 μ‹œμ μ— μ €μž₯ κ³΅κ°„μ˜ 크기λ₯Ό ν™•μ •ν•˜λ©° ν™•μ •ν•œ ν›„ λ³€κ²½ν•  수 μ—†λ‹€. λ°˜λ©΄μ— μ»¬λ ‰μ…˜μ€ λ°μ΄ν„°μ˜ κ°œμˆ˜μ— 따라 λ™μ μœΌλ‘œ μ €μž₯곡간이 달라진닀.

 

 

Q. ν”„λ ˆμž„μ›Œν¬μ™€ 라이브러리의 차이점은?

A. 일반적으둜 λ‹¨μˆœνžˆ μ—°κ΄€λœ ν΄λž˜μŠ€μ™€ μΈν„°νŽ˜μ΄μŠ€λ“€μ˜ λ¬ΆμŒμ„ 라이브러리라고 ν•œλ‹€. ν”„λ ˆμž„μ›Œν¬μ™€ 라이브러리의 κ°€μž₯ 큰 차이점은 μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ˜ νλ¦„μ˜ μ£Όλ„κΆŒμ„ λˆ„κ°€ μ₯κ³  μžˆλŠ”μ§€λΌκ³  μƒκ°ν•œλ‹€. ν”„λ ˆμž„μ›Œν¬λŠ” 슀슀둜 μ œμ–΄ νλ¦„μ˜ μ£Όλ„κΆŒμ„ 작으면, λΌμ΄λΈŒλŸ¬λ¦¬λŠ” κ°œλ°œμžκ°€ μ£Όλ„κΆŒμ„ κ°€μ§€κ³  μžˆλ‹€. ν”„λ ˆμž„μ›Œν¬λŠ” 큰 ν‹€λ‘œ κ°œλ°œν•  수 μžˆλŠ” λ²”μœ„μ™€ 따라야 ν•  κ°€μ΄λ“œκ°€ μ‘΄μž¬ν•œλ‹€. λΌμ΄λΈŒλŸ¬λ¦¬λŠ” νŠΉμ • κΈ°λŠ₯을 λ„μ™€μ£ΌλŠ” 도ꡬ와 같은 역할을 ν•œλ‹€. 

 

 

 

 


 

 

 

 

βœ”οΈ   List<E> μ»¬λ ‰μ…˜ μΈν„°νŽ˜μ΄μŠ€_ 626p

 

• List<E>

: μΈν„°νŽ˜μ΄μŠ€λ©° λŒ€ν‘œμ μΈ 클래슀둜 크게 ArrayList<E>, Vector<E>, LinkedList<E>κ°€ μžˆλ‹€.

List<Integer> aList1 = new ArrayList<Integer>();
ArrayList<Integer> aList2 = new ArrayList<Integer>(30);
Vector<String> aList3 = new Vector<String>();
List<MyWork> aList4 = new LinkedList<MyWord>();
List<MyWork> aList5 = new LinkedList<MyWord>(20); // 였λ₯˜ λ°œμƒ!!
μ œλ„€λ¦­μ— λŒ€ν•΄ λ°°μ› μ—ˆλ‹€. μ œλ„€λ¦­μ€ 클래슀 λ‚΄λΆ€μ—μ„œ μ‚¬μš©ν•  데이터 νƒ€μž…μ„ μ™ΈλΆ€μ—μ„œ μ§€μ •ν•  수 μžˆλ„λ‘ ν•˜λŠ” κΈ°λ²•μœΌλ‘œ, κΊΎμ‡  κ΄„ν˜Έ< >μ•ˆμ— νƒ€μž…μ„ μ λŠ”λ‹€. 객체λ₯Ό 생성할 λ•Œ μ§€μ •ν•œ νƒ€μž…κ³Ό λ‹€λ₯Έ νƒ€μž…μ„ μ‚¬μš©ν•˜λ©΄ 컴파일 μ‹œμ μ— 였λ₯˜λ₯Ό λ°œμƒμ‹œμΌœ, νƒ€μž… μ•ˆμ •μ„±μ„ 보μž₯ν•΄μ€€λ‹€.

List<E> μžμ²΄λŠ” μ œλ„€λ¦­ μΈν„°νŽ˜μ΄μŠ€λ‘œ 이λ₯Ό μƒμ†ν•œ μžμ‹ 클래슀 λͺ¨λ‘ μ œλ„€λ¦­ ν΄λž˜μŠ€κ°€ λœλ‹€. 즉, 객체λ₯Ό 생성할 λ•Œ μ œλ„€λ¦­μ˜ μ‹€μ œ νƒ€μž…μ„ μ§€μ •ν•΄μ•Ό ν•œλ‹€. <E>μ—μ„œ EλŠ” μš”μ†Œμ˜ Elementλ₯Ό λœ»ν•˜μ—¬ μ—¬κΈ°μ„œ μ–΄λ–€ νƒ€μž…μ˜ 데이터λ₯Ό μ§€μ •ν• μ§€ μ™ΈλΆ€μ—μ„œ μ§€μ •ν•œλ‹€. aList1은 Integer둜 μ§€μ •λ˜μ—ˆμœΌλ‹ˆ μ •μˆ˜λ§Œ μ €μž₯ν•  수 μžˆλŠ” Listκ°€ λ˜μ—ˆλ‹€.

aList1은 λΆ€λͺ¨ νƒ€μž…μΈ List<E>둜 μ„ μ–Έν–ˆκ³ , aList3은 μžμ‹ 클래슀인 ꡬ체적인 κ΅¬ν˜„ 클래슀 νƒ€μž…μœΌλ‘œ μ„ μ–Έν–ˆλ‹€. μ΄λŠ” μžλ°”μ˜ λ‹€ν˜•μ„±μ„ ν™œμš©ν•œ κ²ƒμœΌλ‘œ, μ»¬λ ‰μ…˜ κ°μ²΄λŠ” λΆ€λͺ¨ νƒ€μž…(List)μœΌλ‘œλ„ μ„ μ–Έν•  수 있고, ꡬ체적인 μžμ‹ 클래슀(ArrayList, LinkedList λ“±)λ‘œλ„ μ„ μ–Έν•  수 μžˆλ‹€.

LinkedList<E>λ₯Ό μ œμ™Έν•œ λ‚˜λ¨Έμ§€ λŒ€ν‘œ κ΅¬ν˜„ ν΄λž˜μŠ€λŠ” 초기 μ €μž₯ μš©λŸ‰μ„ λ§€κ°œλ³€μˆ˜λ‘œ ν¬ν•¨ν•˜κ³  μžˆλŠ” μƒμ„±μžλ₯Ό λ§Œλ“€ 수 μžˆλ‹€. μ΄λ•Œ μ €μž₯ μš©λŸ‰μ€ μ‹€μ œ 데이터 개수λ₯Ό λ‚˜νƒ€λ‚΄λŠ” μ €μž₯ κ³΅κ°„μ˜ ν¬κΈ°μ™€λŠ” λ‹€λ₯Έ κ°œλ…μœΌλ‘œ, 데이터λ₯Ό μ €μž₯ν•˜κΈ° μœ„ν•΄ 미리 ν• λ‹Ήν•΄ 놓은 λ©”λͺ¨λ¦¬ 크기라고 생각면 λœλ‹€.

 

 

Q. μ œλ„€λ¦­μ„ μ“°μ§€ μ•Šμ€ ListλŠ” μ–΄λ–»κ²Œ λ‹€λ₯ΌκΉŒ?

A. νƒ€μž…μ„ μ§€μ •ν•˜μ§€ μ•Šμ€ List둜 Object νƒ€μž…μœΌλ‘œ κ°„μ£Όλ˜μ–΄ 아무 νƒ€μž…μ΄λ‚˜ 넣을 수 μžˆλ‹€. ν•˜μ§€λ§Œ κΊΌλ‚Ό λ•Œ 일일이 ν˜•λ³€ν™˜μ΄ ν•„μš”ν•˜λ©° 컴파일 μ‹œ 였λ₯˜λ₯Ό μž‘μ„ 수 μ—†λ‹€λŠ” 단점을 μ§€λ‹ˆκ³  μžˆλ‹€.
List list = new ArrayList();
list.add("Hello");
list.add(123);​


 

 

 

• Arrays.asList( )

: 배열을 리슀트둜 λ³€ν™˜ν•˜λŠ” λ©”μ„œλ“œ, λ‚΄λΆ€μ μœΌλ‘œ 배열을 λ¨Όμ € μƒμ„±ν•œ ν›„ List<E>둜 λž˜ν•‘ν•˜κΈ° λ•Œλ¬Έμ— μ €μž₯ κ³΅κ°„μ˜ 크기λ₯Ό λ³€κ²½ν•  수 μ—†λ‹€.

List<Integer> aList7  = Arrays.asList(1,2,3,4);
List<String> aList8  = Arrays.asList("μ•ˆλ…•","ν•˜μ„Έμš”");
Arrays.asList( ) 정적 λ©”μ„œλ“œλŠ” λ‚΄λΆ€ ꡬ쑰가 λ°°μ—΄κ³Ό λ™μΌν•˜μ—¬ 데이터λ₯Ό μΆ”κ°€(add( ))ν•˜κ±°λ‚˜ μ‚­μ œ(remove( ))κ°€ λΆˆκ°€ν•˜λ‹€. λ‹€λ§Œ μ €μž₯ κ³΅κ°„μ˜ 크기λ₯Ό λ³€κ²½ν•˜μ§€ μ•ŠλŠ” λ°μ΄ν„°μ˜ λ³€κ²½(set( ))은 κ°€λŠ₯ν•˜λ‹€. 주둜 κ³ μ •λœ 개수의 데이터λ₯Ό μ €μž₯ν•˜κ±°λ‚˜ ν™œμš©ν•  λ•Œ 주둜 μ‚¬μš©ν•œλ‹€.(예둜 μš”μΌμ΄ μžˆλ‹€.)

 

 

 

 

• List<E>의 μ£Όμš” λ©”μ„œλ“œ

ꡬ뢄 리턴 νƒ€μž… λ©”μ„œλ“œλͺ… κΈ°λŠ₯
데이터
μΆ”κ°€
boolean add(E element) λ§€κ°œλ³€μˆ˜λ‘œ μž…λ ₯된 μ›μ†Œλ₯Ό 리슀트 λ§ˆμ§€λ§‰μ— μΆ”κ°€
void add(int index, E element) index μœ„μΉ˜μ— μž…λ ₯된 μ›μ†Œ μΆ”κ°€
boolean addAll(Collection<? Extends E> c) λ§€κ°œλ³€μˆ˜λ‘œ μž…λ ₯된 μ»¬λ ‰μ…˜ 전체λ₯Ό λ§ˆμ§€λ§‰μ— μΆ”κ°€
boolean addAll(int index, Collection
<? Extends E> c)
index μœ„μΉ˜μ— μž…λ ₯된 μ»¬λ ‰μ…˜ 전체λ₯Ό μΆ”κ°€
데이터 λ³€κ²½ E set(int index, E element) index μœ„μΉ˜μ˜ μ›μ†Ÿκ°’μ„ μž…λ ₯된 μ›μ†Œλ‘œ λ³€κ²½
데이터 μ‚­μ œ E remove(int index) index μœ„μΉ˜μ˜ μ›μ†Ÿκ°’ μ‚­μ œ
boolean remove(Object o) μ›μ†Œ 쀑 λ§€κ°œλ³€μˆ˜ μž…λ ₯κ³Ό λ™μΌν•œ 객체 μ‚­μ œ
void clear( ) 전체 μ›μ†Œ μ‚­μ œ
리슀트
데이터
μ •λ³΄μΆ”μΆœ
E get(int index) index μœ„μΉ˜μ˜ μ›μ†Ÿκ°’μ„ κΊΌλ‚΄ 리턴
int size( ) 리슀트 객체 내에 ν¬ν•¨λœ μ›μ†Œμ˜ 개수
boolean isEmpty( ) 리슀트의 μ›μ†Œκ°€ ν•˜λ‚˜λ„ μ—†λŠ”μ§€ μ—¬λΆ€λ₯Ό 리턴
리슀트 λ°°μ—΄
λ³€ν™˜
Object[ ] toArray( ) 리슀트λ₯Ό Object λ°°μ—΄λ‘œ λ³€ν™˜
T[ ] toArray(T[] t) μž…λ ₯λ§€κ°œλ³€μˆ˜λ‘œ μ „λ‹¬ν•œ νƒ€μž…μ˜ λ°°μ—΄λ‘œ λ³€ν™˜

 

 

 

 


 

 

 

 

βœ”οΈ   ArrayList<E> κ΅¬ν˜„ 클래슀_ 632p

 

• ArrayList<E>

: List<E> μΈν„°νŽ˜μ΄μŠ€λ₯Ό κ΅¬ν˜„ν•œ κ΅¬ν˜„ 클래슀둜 μˆ˜μ§‘ν•œ μ›μ†Œλ₯Ό 인덱슀둜 κ΄€λ¦¬ν•˜μ—¬ μ €μž₯ μš©λŸ‰μ„ λ™μ μœΌλ‘œ κ΄€λ¦¬ν•œλ‹€.

List<Integer> aList1 = new ArrayList<Integer>();
aList1.add(1);
aList1.add(2);
System.out.println(aList1.toString()); // aList1=[1,2]

aList1.addAll(1,aList1);
System.out.println(aList1.toString()); // aList1=[1,1,2,2]

aList1.set(1,5);
System.out.println(aList1.toString()); // aList1=[1,5,2,2]

aList1.remove(1);
System.out.println(aList1.toString()); // aList1=[1,2,2]

aList1.remove(new Integer(2));
System.out.println(aList1.toString()); // aList1=[1]

aList1.clear();
System.out.println(aList1.toString()); // aList1=[]
addλŠ” 값을 μΆ”κ°€ν•˜κ³  addAll은 aList1 전체λ₯Ό 1λ²ˆμ§Έμ— μΆ”κ°€ν•œλ‹€λŠ” μ˜λ―Έμ΄λ‹€. set의 경우 변경을 μ˜λ―Έν•˜λŠ”λ°, 인덱슀 1번째 값을 5둜 λ°”κΏ¨λ‹€. removeλŠ” λ‘κ°€μ§€λ‘œ λ‚˜λ‰œλ‹€. remove(int index)둜 인덱슀 값을 μ°Ύμ•„ μ‚­μ œν•˜λŠ” 것과 remove(Object o)둜 값을 μ‚­μ œν•˜λŠ” 것. κ·Έλž˜μ„œ aList1.remove(1)은 1번째 인덱슀λ₯Ό μ‚­μ œν–ˆκ³ , aList.remove(new Integer(2))λŠ” 숫자 2λ₯Ό μ°Ύμ•„ μ‚­μ œν–ˆλ‹€. clear은 λͺ¨λ“  μ›μ†Œλ₯Ό μ‚­μ œν•œλ‹€λŠ” μ˜λ―Έλ‹€. 

 

 

Q. removeμ—μ„œ μ›μ†Œμ˜ 값을 μ‚­μ œν•˜κ³  싢을 λ•Œ new Integer(2)와 같이 μ“°λŠ”λ°, μ™œ newλ₯Ό λΆ™μ΄λŠ”κ±ΈκΉŒ?

A. 인덱슀 κ°’μœΌλ‘œ μ‚­μ œν•˜λŠ” 방식과 ν˜Όλ™ν•˜μ§€ μ•ŠκΈ° μœ„ν•΄ 객체λ₯Ό μƒμ„±ν•˜λ„λ‘ ν•œλ‹€.  alist.remove(new Integer(2))은 값이 2이 integer 객체λ₯Ό μ°Ύμ•„ μ‚­μ œν•˜λΌλŠ” 의미둜 일련의 과정을 μ‚΄νŽ΄λ³΄μž. 첫번째둜 new Integer(2)을 톡해 값이 2인 Integer 객체λ₯Ό ν•˜λ‚˜ μƒμ„±ν•œλ‹€. κ·Έ λ‹€μŒ remove(Object o)λ₯Ό ν˜ΈμΆœν•˜λ©΄μ„œ 이 객체λ₯Ό 인자둜 λ„˜κΈ΄λ‹€. λ¦¬μŠ€νŠΈλŠ” λ‚΄λΆ€μ μœΌλ‘œ equals() λ©”μ„œλ“œλ₯Ό μ‚¬μš©ν•΄μ„œ 리슀트 μ•ˆμ— μžˆλŠ” μš”μ†Œλ“€κ³Ό 이 객체2κ°€ 같은지 비ꡐ ν›„ 같은 값이 있으면 μ‚­μ œν•œλ‹€. Java 5λΆ€ν„° μ˜€ν† λ°•μ‹±(λ°•μ‹±κ³Ό 언박싱을 μžλ™μ μœΌλ‘œ 처리)이 μžˆμ–΄μ„œ remove(Integer.valueOf(2))μ΄λ‚˜ remove((Integer)2)도 κ°€λŠ₯ν•˜κΈ°λŠ” ν•˜λ‚˜ newλ₯Ό μ‚¬μš©ν•΄μ„œ μ‚­μ œν•˜λŠ” 것이 κ°€μž₯ μ•ˆμ „ν•˜λ‹€.

 

 

List<Integer> aList2 = new ArrayList<Integer>();

System.out.println(aList2.isEmpty); // true

aList2.add(1);
aList2.add(2);
aList2.add(3);
System.out.println(aList2.toString()); // aList2 = [1,2,3]
System.out.println("size: " + aList2.size()); // size: 3
System.out.println("0번째: " + aList2.get(0))); // 0번째: 1
isEmpty( )λŠ” 데이터가 ν•˜λ‚˜λ„ 없을 λ•Œλ§Œ true값을 λ¦¬ν„΄ν•œλ‹€. 주둜 λ°μ΄ν„°μ˜ 쑴재 μ—¬λΆ€λ₯Ό 확인할 λ•Œ μ‚¬μš©ν•œλ‹€. size( )λŠ” μ‹€μ œ 데이터 개수λ₯Ό λ¦¬ν„΄ν•˜λ©° 좔가와 μ‚­μ œκ°€ 이뀄지면 κ·Έλ•Œλ§ˆλ‹€ 값은 변경될 것이닀. get(int index)λŠ” νŠΉμ • μœ„μΉ˜μ˜ 값을 κ°€μ Έμ˜¬ λ•Œ μ‚¬μš©ν•œλ‹€.

 

 

Q. μ •μˆ˜ν˜•μ„ λ‹΄λŠ” 리슀트인데 좜λ ₯ν•  λ•Œ toString( )을 μ‚¬μš©ν•΄μ•Όν•˜λŠ” μ΄μœ λŠ” λ¬΄μ—‡μΌκΉŒ?

A. toString( ) λ©”μ„œλ“œλ₯Ό μ‚¬μš©ν•˜μ§€ μ•Šμ•„λ„ μžλ™μœΌλ‘œ 호좜되긴 ν•˜λŠ”λ°, κ²°κ΅­ λ‚΄λΆ€μ μœΌλ‘œ toString을 μ‚¬μš©ν•˜κ³  μžˆλ‹€. toString을 μ‚¬μš©ν•˜λŠ” 경우λ₯Ό 보면 λ¬Έμžμ—΄μ„ 좜λ ₯ν•  경우 ν˜Ήμ€ 객체λ₯Ό 좜λ ₯ν•˜λŠ” κ²½μš°μ΄λ‹€. λ¦¬μŠ€νŠΈμ— λ‹΄κ²¨μžˆλŠ” 것이 μ •μˆ˜ νƒ€μž…μ΄μ–΄λ„ 리슀트 자체λ₯Ό 객체둜 λΆ„λ₯˜ν•˜κΈ° λ•Œλ¬Έμ— Objectλ‘œμ„œ toString( )을 ν˜ΈμΆœν•œλ‹€.

 

 

 

 


 

 

 

βœ”οΈ   Vector<E>, LinkedList<E> κ΅¬ν˜„ 클래슀_ 639p

 

• Vector<E>

: List<E> 곡톡적인 νŠΉμ„±μ„ κ°€μ§€λ©°, 동기화 λ©”μ„œλ“œλ‘œ κ΅¬ν˜„λΌ λ©€ν‹° μ“°λ ˆλ“œμ— μ ν•©ν•˜λ‹€.

List<Integer> vector1 = new Vector<Integer>();
λ™κΈ°ν™”λ©”μ„œλ“œ(synchronized method)둜 κ΅¬ν˜„λœ Vector<E>λŠ” ν•˜λ‚˜μ˜ 곡유 객체λ₯Ό 2개의 μ“°λ ˆλ“œκ°€ λ™μ‹œμ— μ‚¬μš©ν•  수 μ—†λ‹€. ν•˜λ‚˜μ˜ μ“°λ ˆλ“œλŠ” 데이터λ₯Ό 읽고 또 ν•˜λ‚˜μ˜ μ“°λ ˆλ“œκ°€ 데이터λ₯Ό μ‚­μ œν•˜λŠ” μž‘μ—…μ„ λ™μ‹œμ— μˆ˜ν–‰ν•΄ μž‘μ—…μ΄ μΆ©λŒν•˜λŠ” 상황을 λ°©μ§€ν•œλ‹€. Vector<E>λŠ” ArrayList<E>와 λ™μΌν•œ κΈ°λŠ₯을 μˆ˜ν–‰ν•˜μ§€λ§Œ, λ©€ν‹° μ“°λ ˆλ“œμ—μ„œ μ‚¬μš©ν•  수 μžˆλ„λ‘ κΈ°λŠ₯을 μΆ”κ°€ν–ˆλ‹€. λ§Œμ•½ ν•˜λ‚˜μ˜ μ“°λ ˆλ“œλ§Œ μ‚¬μš©ν•˜λŠ” κ²½μš°λŠ” Vector<E>말고 ArrayList<E>λ₯Ό μ‚¬μš©ν•˜λŠ” 것이 더 μ ν•©ν•˜λ‹€.

 

 

 

• LinkedList<E>

: List<E> 곡톡적인 νŠΉμ„±μ„ κ°€μ§€λ©°, μ•žλ’€ 객체의 정보λ₯Ό μ €μž₯ν•˜λ©° 객체 μƒμ„±μ‹œ μ €μž₯ μš©λŸ‰μ„ μ§€μ •ν•  수 μ—†λ‹€.

List<E> aLinkedList1 = new LinkedList<Integer>();

 

LinkedList<E>λŠ” ArrayList<E>와 같이 λ™κΈ°ν™”ν•˜μ§€ μ•ŠκΈ° 떄문에 μ‹±κΈ€ μ“°λ ˆλ“œμ— μ ν•©ν•˜λ‹€. ArrayList<E>와 λ‹€λ₯Έ 점은 μ €μž₯ μš©λŸ‰μ„ λ§€κ°œλ³€μˆ˜λ‘œ κ°–λŠ” μƒμ„±μžκ°€ μ—†μ–΄ μ €μž₯ μš©λŸ‰μ„ μ§€μ •ν•  수 μ—†λ‹€λŠ” 것이닀. 그리고 λ‚΄λΆ€μ μœΌλ‘œ 데이터λ₯Ό μ €μž₯ν•˜λŠ” 방식이 λ‹€λ₯Έλ°, ArrayList<E>λŠ” 인덱슀의 κ°’μœΌλ‘œ μ €μž₯ν•˜μ§€λ§Œ LinkedList<E>λŠ” μ•žλ’€ 객체의 정보λ₯Ό μ €μž₯ν•˜μ—¬ λͺ¨λ“  데이터가 μ„œλ‘œ μ—°κ²°λœ ν˜•νƒœλ₯Ό 이룬닀.

0λ²ˆμ§Έμ— μƒˆλ‘œμš΄ μ›μ†Œ ν•˜λ‚˜κ°€ λ“€μ–΄μ„°λ‹€. ArrayList<E>λŠ” 0번째 μ΄ν›„μ˜ λͺ¨λ“  μ›μ†Œλ“€μ΄ λ’€λ‘œ λ°€λ €λ‚œλ‹€. ν•˜μ§€λ§Œ LinkedList<E>λŠ” 각 μ›μ†Œμ˜ μ•žλ’€ 객체 μ •λ³΄λ§Œ κ°€μ§€κ³  였면 λ˜λ―€λ‘œ μ–΄λ”˜κ°€μ— 값이 μΆ”κ°€λ˜μ–΄λ„ μ•žλ’€ μ •λ³΄λ§Œ μˆ˜μ •ν•˜λ©΄ λœλ‹€. 이런 것을 μ‚΄νŽ΄λ³΄λ©΄ 값이 μΆ”κ°€λ˜λ©΄ ArrayList<E>의 속도가 LinkedList<E>보닀 느린 것을 μ•Œ 수 μžˆλ‹€. λŒ€μ‹  μ–΄λ–€ 값을 μ°Ύμ•„μ•Όν•˜λŠ” 상황이라면, 인덱슀 번호둜 찾을 수 μ—†μœΌλ‹ˆ μ²˜μŒλΆ€ν„° ν•˜λ‚˜ν•˜λ‚˜ ν™•μΈν•΄μ•Όν•˜λŠ” LinkedList<E>κ°€ 훨씬 느릴 것이닀.