π μ°Έκ³ ν μ±
- κΈ°λ³Έμ μΈ κ°λ μ μ 리νκ³ μΆκ°μ μΌλ‘ κΆκΈν κ²λ€μ μ 리νμ΅λλ€ -
π₯ π₯ π₯
βοΈ μ»¬λ μ νλ μμν¬_ 624p
• 컬λ μ (collection)
: λμΌν νμ μ λ¬Άμ΄ κ΄λ¦¬νλ μλ£κ΅¬μ‘°λ‘ λ°μ΄ν°μ μ μ₯ μ©λμ λμ μΌλ‘ κ΄λ¦¬ν μ μλ€.
• νλ μμν¬(framework)
: μ€κ³μ μμΉ λλ ꡬ쑰μ λ°λΌ ν΄λμ€ λλ μΈν°νμ΄μ€λ₯Ό μ€κ³νκ³ , μ€κ³λ ν΄λμ€μ μΈν°νμ΄μ€λ₯Ό λ¬Άμ΄ λμ κ°λ μ΄λ€.
• 컬λ μ νλ μμν¬
: 리μ€νΈ, μ€ν, ν, νΈλ¦¬ λ±μ μλ£κ΅¬μ‘°μ μ λ ¬, νμ λ±μ μκ³ λ¦¬μ¦μ ꡬ쑰νν΄ λμ νλ μμν¬
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>κ° ν¨μ¬ λ릴 κ²μ΄λ€.
'π Java > μλ°μμ μ 볡' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[Java] Set<E> 컬λ μ μΈν°νμ΄μ€, HashSet<E>, LinkedHashSet<E>, TreeSet<E> μ°¨μ΄μ (1) | 2025.07.07 |
---|---|
[Java] μ λ€λ¦ (1) | 2025.05.27 |
[Java] μ°λ λ λκΈ°ν, μ°λ λ μν (0) | 2025.05.26 |
[Java] μ°λ λ, μ°λ λμ μμ±, λ°λͺ¬μ°λ λ (0) | 2025.05.20 |
[Java] μμΈμ²λ¦¬, μμΈμ κ°, μ¬μ©μ μ μ μμΈ ν΄λμ€ (0) | 2025.05.14 |