1οΈβ£ μ ν μλ£κ΅¬μ‘° - λ°°μ΄.
μλ£κ΅¬μ‘° κ΄μ μμ λ°°μ΄μ μ΄ν΄νκ³ μ¬λ¬ λ°©λ²μΌλ‘ ꡬν κ°λ₯
1οΈβ£ λ°°μ΄(Array).
μλ£κ΅¬μ‘° κ΄μ μμ λ°°μ΄(Array)μ λμΌν νμ μ λ°μ΄ν°λ₯Ό μ°μλ λ©λͺ¨λ¦¬ 곡κ°μ μ μ₯νλ μ ν μλ£κ΅¬μ‘°μ λλ€.
λ°°μ΄μ μ‘°μ λ ν¬κΈ°λ₯Ό κ°μ§λ©°, μΈλ±μ€λ₯Ό μ¬μ©νμ¬ κ° μμμ λΉ λ₯΄κ² μ κ·Όν μ μλ νΉμ§μ΄ μμ΅λλ€.
λ°°μ΄μ κ°μ₯ κΈ°λ³Έμ μ΄κ³ λ리 μ¬μ©λλ μλ£κ΅¬μ‘° μ€ νλμ λλ€.
νΉμ§.
-
κ³ μ λ ν¬κΈ°(Fixed Size)
- λ°°μ΄μ μ μΈ μ ν¬κΈ°κ° κ²°μ λλ©°, λ°°μ΄μ ν¬κΈ°λ λ³κ²½ν μ μμ΅λλ€. μ΄ ν¬κΈ°λ λ°°μ΄μ μ¬μ©νλ λμ κ³ μ λμ΄ μμ΅λλ€.
- μ: β
int[] numbers = new int[10];
β(ν¬κΈ°κ° 10μΈ μ μν λ°°μ΄)
-
μ°μλ λ©λͺ¨λ¦¬ 곡κ°(Contiguous Memory Allocation)
- λ°°μ΄μ μμλ€μ λ©λͺ¨λ¦¬μμ μ°μμ μΌλ‘ λ°°μΉλ©λλ€. μ΄λ μΈλ±μ€λ₯Ό ν΅ν λΉ λ₯Έ μ κ·Όμ κ°λ₯νκ² ν©λλ€.
- 첫 λ²μ§Έ μμμ λ©λͺ¨λ¦¬ μ£Όμλ₯Ό κΈ°μ€μΌλ‘ μΈλ±μ€λ₯Ό μ¬μ©νμ¬ λ€λ₯Έ μμμ μ£Όμλ₯Ό κ³μ°ν μ μμ΅λλ€.
-
μΈλ±μ€λ₯Ό ν΅ν μ κ·Ό(Indexing)
- λ°°μ΄μ κ° μμλ μΈλ±μ€λ₯Ό ν΅ν΄ μ κ·Όν μ μμ΅λλ€. μΈλ±μ€λ 0λΆν° μμνμ¬ λ°°μ΄μ ν¬κΈ° -1κΉμ§μ κ°μ κ°μ§λλ€.
- μ: β
numbers[0]
β,βnumbers[1]
β,β¦,βnumbers[9]
β
-
λμΌν λ°μ΄ν° νμ
(Homogeneous Data Type)
- λ°°μ΄μ λμΌν λ°μ΄ν° νμ μ μμλ€λ‘ ꡬμ±λ©λλ€. μ¦, λ°°μ΄ λ΄ λͺ¨λ μμλ κ°μ λ°μ΄ν° νμ μ΄μ΄μΌ ν©λλ€.
- μ: μ μν λ°°μ΄, λ¬Έμμ΄ λ°°μ΄ λ±.
μ₯μ .
-
λΉ λ₯Έ μ κ·Ό μλ(Fast Access) :
- μΈλ±μ€λ₯Ό μ¬μ©νμ¬ O(1) μκ° λ³΅μ‘λλ‘ λ°°μ΄μ μμμ μμμ μ κ·Όν μ μμ΅λλ€. μ΄λ λ°°μ΄μ μ£Όμ μ₯μ μ€ νλμ λλ€.
-
κ°λ¨ν ꡬν(Simple Implementation) :
- λ°°μ΄μ λ°μ΄ν° κ΅¬μ‘°κ° κ°λ¨νμ¬ κ΅¬νμ΄ μ©μ΄ν©λλ€. κΈ°λ³Έμ μΈ μλ£κ΅¬μ‘°λ‘, λ€λ₯Έ 볡μ‘ν μλ£κ΅¬μ‘°μ κΈ°μ΄κ° λ©λλ€.
λ¨μ .
-
κ³ μ λ ν¬κΈ°(Fixed Size) :
- λ°°μ΄μ ν¬κΈ°λ μ μΈ μ κ²°μ λλ©°, ν¬κΈ°λ₯Ό λ³κ²½ν μ μμ΅λλ€. μ΄λ ν¬κΈ°λ₯Ό μ¬μ μ μ νν μμΈ‘νκΈ° μ΄λ €μ΄ κ²½μ° λΉν¨μ¨μ μΌ μ μμ΅λλ€.
-
μ½μ
λ° μμ μ λΉν¨μ¨μ±(Inefficient Insertions and Deletions) :
- λ°°μ΄μ μ€κ°μ μμλ₯Ό μ½μ νκ±°λ μμ ν κ²½μ°, μμλ€μ μ΄λμμΌμΌ νκΈ° λλ¬Έμ O(n) μκ°μ΄ μμλ©λλ€. μ΄λ ν° λ°°μ΄μ κ²½μ° μ±λ₯ μ νλ₯Ό μ΄λν μ μμ΅λλ€.
-
λ©λͺ¨λ¦¬ λλΉ(Memory Waste) :
- λ°°μ΄μ ν¬κΈ°λ₯Ό λ무 ν¬κ² μ€μ νλ©΄ μ¬μ©λμ§ μλ λ©λͺ¨λ¦¬κ° λλΉλ μ μκ³ , λ무 μκ² μ€μ νλ©΄ μΆ©λΆν λ°μ΄ν°λ₯Ό μ μ₯ν μ μμ΅λλ€.
λ°°μ΄μ μ¬μ© μμ.
-
μ μν λ°°μ΄ μ μΈ λ° μ΄κΈ°ν
int[] numbers = new int[5]; numbers[0] = 10; numbers[1] = 20; numbers[2] = 30; numbers[3] = 40; numbers[4] = 50;
-
λ°°μ΄μ μμ μ κ·Ό
int firstElement = numbers[0]; // 10 int lastElement = numbers[4]; // 50
-
λ°°μ΄μ μν
for (int i = 0; i < numbers.length; i++) { System.out.println(numbers[i]); }
λ§λ¬΄λ¦¬.
λ°°μ΄μ λ€μν μν©μμ κΈ°λ³Έμ μΈ λ°μ΄ν° μ μ₯κ³Ό μ κ·Ό λ°©λ²μ μ 곡νλ©°, νΉμ μꡬμ¬νμ λ§μΆ° λ€λ₯Έ μλ£κ΅¬μ‘°μ ν¨κ» μ¬μ©λκΈ°λ ν©λλ€.
λ°°μ΄μ λΉ λ₯Έ μ κ·Ό μλμ κ°λ¨ν ꡬ쑰 λλΆμ, λ§μ μκ³ λ¦¬μ¦κ³Ό νλ‘κ·Έλ¨μμ ν΅μ¬μ μΈ μν μ ν©λλ€.
2οΈβ£ λ°°μ΄ μ§μ ꡬν.
// CustomArray ν΄λμ€
public class CustomArray {
private int[] data;
private int size;
// νΉμ μ©λμΌλ‘ λ°°μ΄μ μ΄κΈ°ννλ μμ±μ
public CustomArray(int capacity) {
data = new int[capacity];
size = 0;
}
// λ°°μ΄μ ν¬κΈ°λ₯Ό κ°μ Έμ€λ λ©μλ
public int size() {
return size;
}
// λ°°μ΄μ΄ λΉμ΄ μλμ§ νμΈνλ λ©μλ
public boolean isEmpty() {
return size == 0;
}
// νΉμ μΈλ±μ€μ μμλ₯Ό κ°μ Έμ€λ λ©μλ
public int get(int index) {
if (index < 0 || index >= size) {
throw new IndexOutOfBoundsException("Index out of bounds");
}
return data[index];
}
// νΉμ μΈλ±μ€μ μμλ₯Ό μ€μ νλ λ©μλ
public void set(int index, int value) {
if (index < 0 || index >= size) {
throw new IndexOutOfBoundsException("Index out of bounds");
}
data[index] = value;
}
// λ°°μ΄μ μμλ₯Ό μΆκ°νλ λ©μλ
public void add(int value) {
if (size == data.length) {
throw new IllegalStateException("Array is full");
}
data[size] = value;
size++;
}
// νΉμ μΈλ±μ€μ μμλ₯Ό μμ νλ λ©μλ
public void remove(int index) {
if (index < 0 || index >= size) {
throw new IndexOutOfBoundsException("Index out of bounds");
}
for (int i = index; i < size - 1; i++) {
data[i] = data[i + 1];
}
size--;
}
// λͺ¨λ μμλ₯Ό μΆλ ₯νλ λ©μλ
public void print() {
for (int i = 0; i < size; i++) {
System.out.print(data[i] + " ");
}
System.out.println();
}
}
μ€λͺ .
-
νλ:
- βdataβ : μ€μ λ°μ΄ν°λ₯Ό μ μ₯νλ λ°°μ΄.
- βsizeβ : νμ¬ λ°°μ΄μ μ μ₯λ μμμ κ°μ.
-
μμ±μ:
- βCustomArray(int capacity)β : μ΄κΈ° μ©λμ μ€μ νμ¬ λ°°μ΄μ μ΄κΈ°ν ν©λλ€.
-
λ©μλ:
- βsize()β : νμ¬ λ°°μ΄μ μ μ₯λ μμμ κ°μλ₯Ό λ°νν©λλ€.
- βisEmpty()β : λ°°μ΄μ΄ λΉμ΄μλμ§ νμΈν©λλ€.
- βget(int index)β : νΉμ μΈλ±μ€μ μμλ₯Ό λ°νν©λλ€.
- βset(int index, int value)β : νΉμ μΈλ±μ€μ μμλ₯Ό μ€μ ν©λλ€.
- βadd(int value)β : λ°°μ΄μ λ§μ§λ§μ μμλ₯Ό μΆκ°ν©λλ€.
- βremove(int index)β : νΉμ μΈλ±μ€μ μμλ₯Ό μ κ±°νκ³ , μ΄νμ μμλ€μ μμΌλ‘ μ΄λμν΅λλ€.
- βprint()β : λ°°μ΄μ λͺ¨λ μμλ₯Ό μΆλ ₯ν©λλ€.