์ค, ์๋ฐ ๋ฐฐ์ด. ๊ทธ๋ค์ ์๋ฐฑ ๋ช
์ ์ด๋ณด ์ํํธ์จ์ด ๊ฐ๋ฐ์๋ค์ ์ด๋ ฌํ ์ฌ๋๊ณผ ์ฆ์ค์ ๋์์
๋๋ค. ์ด๋ฏธ ์ด๊ธฐํ๋ ๋ฐฐ์ด์ ์์๋ฅผ ์ถ๊ฐํ๋ ๊ฒ์ ๋ถ๊ฐ๋ฅํ๋ค๊ณ ... ์ฌ์ค ๊ฐ๋ฅํ์ง๋ง ๊ณ ์ ์ ์ธ ์๋ฏธ๋ ์๋๊ณ ... ๋ณ๋ก ํธ๋ฆฌํ์ง๋ ์์ต๋๋ค. ์ด๋ฏธ ์ด๊ธฐํ๋ ๋ฐฐ์ด์ ์ ์์๋ฅผ ์ถ๊ฐํ๋ ๊ฒ์ ์ผ์ข
์ ํธ๋ฆญ์
๋๋ค. ๊ทธ๋ฌ๋ ์ด๋ฌํ ํธ๋ฆญ์ ์ธํฐ๋ทฐ์์ ์ ์ฉํ ์ ์์ผ๋ฉฐ ๋๋ก๋ ํ๋ก๊ทธ๋๋จธ์ ์์
์์๋ ์ ์ฉํ ์ ์์ต๋๋ค. ๋ฐ์ดํฐ ์ ํ์ ์ฆ๊ฒ๊ฒ ์ฌ์ฉํ๊ณ ํจ์จ์ ์ผ๋ก ์ํํ๋ ๋ฐฉ๋ฒ์ ์๊ณ ์๋์ง ํ์ธํ๊ธฐ ์ํด Java ๋ฐฐ์ด์ ์ ์์๋ฅผ ์ถ๊ฐํ๋ ๋ฐฉ๋ฒ์ ๋ํ ๊ฐ์ด๋๋ฅผ ์์ฑํ์ต๋๋ค. ์ด๋ก ๊ณผ ์ฝ๋ ์ํ์ ์ฃผ์ ๊น๊ฒ ๊ฒํ ํ๋ ๊ฒ ์ธ์ ๊ฒ์๋ฌผ์ ํฌํจ๋ ์ฐ์ต ๋ฌธ์ ๋ฅผ ํ์ธํ๊ณ ์๋ฃํ์ญ์์ค.
์๋ฐ์์ ๋ฐฐ์ด์ด๋?
๋ฐฐ์ด์ด ๋ฌด์์ด๋ฉฐ Java์์ ๋ฐฐ์ด์ ์์ฑํ๋ ๋ฐฉ๋ฒ์ ๊ธฐ์ตํด ๋ด ์๋ค. ์ด ์ ์ ๊ธฐ์ตํ๋ค๋ฉด ๋ค์ ๋ถ์ ์ธ "Java ๋ฐฐ์ด์ ์ ์์๋ฅผ ์ถ๊ฐํ๋ 5๊ฐ์ง ๋ฐฉ๋ฒ"์ผ๋ก ๊ฑด๋๋ฐ์ญ์์ค. Oracle์ ๊ณต์ Java ๋ฌธ์์ ๋ฐ๋ฅด๋ฉด ๋ฐฐ์ด์ ๋์ผํ ๋ฐ์ดํฐ ์ ํ์ ์ํ๋ ์ผ๋ จ์ ๊ฐ์ ๋๋ค. ์ ์ ์งํฉ์ Java์์ ๋ฐฐ์ด ์ ์๋ฒฝํ ์์ ๋๋ค . ์ ์ํ ๋ชจ๋ ๊ฐ์ ์ธ๋ฑ์ค ๋ผ๋ ๋ฐฐ์ด ๋ด ํน์ ์์น์ ์์ต๋๋ค . ๋ฐฐ์ด์ ์ ์ธํ๊ณ ์ด๊ธฐํํ๋ ๋ฐฉ๋ฒ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
int[] myArray = new int[10];
int[] myArray1 = {1, 0, 3, 17, 5, 6, 7, 8, 9, 10}
์ฒซ ๋ฒ์งธ ๊ฒฝ์ฐ์๋ myArray ๋ฐฐ์ด์ ์ ์ํ๊ณ Java๊ฐ 10๊ฐ ์์ ๋ฐฐ์ด์ ์ํ ๊ณต๊ฐ์ ํ ๋นํ๋๋ก ํ์ต๋๋ค. ๋ ๋ฒ์งธ myArray1 ์์๋ ์ฆ์ 10๊ฐ์ ๊ฐ์ ์
๋ ฅํ์ต๋๋ค. ๋ ๊ฒฝ์ฐ ๋ชจ๋ ์์ 11์ ๋จ์ํ ๋ฐฐ์ด์ ํธ์ํ ์ ์์ต๋๋ค. ๋ฐฐ์ด ์์
์ ์ํํ๊ธฐ ์ํด ๊ฐ๋ฐ์๋ ๋ฐฐ์ด์ ํฌํจ๋ ๊ฐ์ ์ธ๋ฑ์ค๋ฅผ ์กฐ์ํฉ๋๋ค. ์ด๋ป๊ฒ ํด์ผ ํฉ๋๊น? ๋ฐฐ์ด์ ์ถ๊ฐํ๋ ๊ฐ์ฅ ์ผ๋ฐ์ ์ธ ๋ฐฉ๋ฒ์ ์ดํด๋ณด๊ฒ ์ต๋๋ค.
Java ๋ฐฐ์ด์ ์ ์์๋ฅผ ์ถ๊ฐํ๋ 5๊ฐ์ง ๋ฐฉ๋ฒ
๋ถ๋ณ์ ๋ณํ ์ ์๊ฒ ๋ง๋๋ ํธ๋ฆญ์ ๋๋ค.- ๋ฐฐ์ด์ ๋ชฉ๋ก์ผ๋ก ๋ณํ
- ๋ ํฐ ์ฉ๋์ ์ ์ด๋ ์ด๋ฅผ ๋ง๋ค๊ณ ์ด๋ ์ด์ ์ ์์๋ฅผ ์ถ๊ฐํฉ๋๋ค.
- System.arraycopy() ๊ตฌํ
- Apache Commons๋ฅผ ์ฌ์ฉํ์ฌ ๋ฐฐ์ด ๋ณต์ฌ
- ArrayCopyOf() ๋ฉ์๋ ์ ์ฉ
1. ๋ฐฐ์ด์ ๋ชฉ๋ก์ผ๋ก ๋ณํ
์ ์์๋ฅผ ๋ฐฐ์ด์ ์ง์ ์ถ๊ฐํ ์ ์์ผ๋ฏ๋ก ์ฐจ์ ์ฑ ์ ๋ชฉ๋ก์ผ๋ก ๋ณํํ๊ณ ์ ์์๋ฅผ ์ถ๊ฐํ ๋ค์ ๊ฐ์ ๋ฐฐ์ด๋ก ๋ค์ ๋ณํํ๋ ๊ฒ์ ๋๋ค. ๋ฐฐ์ด์ ๋ชฉ๋ก์ผ๋ก ๋ณํํ๋ ์ฒซ ๋ฒ์งธ ๋ฐฉ๋ฒ์ asList()๋ฅผ ์ฌ์ฉํ์ฌ ์ ArrayList๋ฅผ ๋ง๋๋ ๊ฒ์ ๋๋ค. ๊ฐ ๋ฒ์๊ฐ ์ฑ๊ณต์ ์ผ๋ก ๋ณํ๋๋ฉด ListAdd()๋ฅผ ์ฌ์ฉํ์ฌ ๊ฐ์ ์ฝ์ ํฉ๋๋ค. ๋ ์ด์ ๋ฐฐ์ด์ ํธ์งํ ํ์๊ฐ ์์ผ๋ฉด toArray() ๋ฉ์๋ ๋ฅผ ์ฌ์ฉํ์ฌ ์๋ ๋ฐ์ดํฐ ์ ํ์ผ๋ก ๋ค์ ๋ณํํ์ญ์์ค . ๋ชจ๋ ๋ฐฉ๋ฒ๊ณผ ๋ณํ์ ์ฌ์ฉํ๋ฉด ์ฒ์์๋ ํผ๋์ค๋ฌ์ ๋ณด์ผ ์ ์์ต๋๋ค. asList()๋ฅผ ์ฌ์ฉํ์ฌ ์ ๋ฆฌํ๋ ์๋ฅผ ์ดํด๋ณด๊ฒ ์ต๋๋ค .
// Code for adding Java arrays to a program
import java.lang.*;
import java.util.*;
class ArrayDemo{
//Letโs add a new element to an array
public static Integer[] addX(Integer myArray[], int x) {
int i;
//turn array into ArrayList using asList() method
List arrList = new ArrayList( Arrays.asList(myArray));
// adding a new element to the array
arrList.add(x);
// Transforming the ArrayList into an array
myArray = arrList.toArray(myArray);
return myArray;
}
public static void main(String[] args) {
int i;
//initial array
Integer myArray[] = { 0, 1, 2, 45, 7, 5, 17};
//print the initial array out
System.out.println("Initial Array: "
+ Arrays.toString(myArray));
//element to be added
int x = 28;
// call the method to add x in myArray
myArray = addX(myArray, x);
// print the updated array out
System.out.println("Array with " + x + " added: "
+ Arrays.toString(myArray));
}
}
์ถ๋ ฅ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
์ด๊ธฐ ๋ฐฐ์ด: [0, 1, 2, 45, 7, 5, 17] 28์ด ์ถ๊ฐ๋ ๋ฐฐ์ด: [0, 1, 2, 45, 7, 5, 17, 28]
๋ฐ๋ผ์ ํ๋ก๊ทธ๋จ์์ ์ฐ๋ฆฌ๋ 7๊ฐ์ ๊ฐ์ผ๋ก ๊ตฌ์ฑ๋ myArray ๋ฐฐ์ด์ ์ฑ๊ณต์ ์ผ๋ก ์์ฑ ํ๊ณ ์ฑ์ฐ๊ณ ์ถ๋ ฅํ์ต๋๋ค. ๊ทธ๋ฐ ๋ค์ 10๊ฐ์ง ๊ฐ์ผ๋ก๋ ์ถฉ๋ถํ์ง ์๋ค๊ณ ๊ฒฐ์ ํ์ต๋๋ค. ๊ธ์, ์ฐ๋ฆฌ๋ Arrays.asList ๋ฉ์๋ ๋ฅผ ์ฌ์ฉํ์ฌ myArray๋ฅผ ArrayList arrList๋ก ๋ณํํ์ต๋๋ค . ์ฌ๊ธฐ์ ์ถ๊ฐํ ์์์ธ 28์ด ์์ต๋๋ค. ArrayList arrList ์ ์ถ๊ฐํ ๋ค์ toArray() ๋ฉ์๋๋ฅผ ์ฌ์ฉํ์ฌ ๋ค์ ๋ฐฐ์ด๋ก ๋ณํ ํ๊ณ ์ ๋ฐฐ์ด์ ์ธ์ํ์ต๋๋ค.
2. ์ฉ๋์ด ๋ ํฐ ์ ์ด๋ ์ด ์์ฑ
๋ฐฐ์ด์ ๋ ๋ง์ ์์๋ฅผ ์ถ๊ฐํ๋ ๊ฐ์ฅ ์ผ๋ฐ์ ์ธ ๋ฐฉ๋ฒ ์ค ํ๋๋ ์ฒ์๋ถํฐ ์๋กญ๊ณ ๋ ํฐ ๋ฐฐ์ด์ ๋ง๋ค๊ณ ์ด์ ์์๋ฅผ ๋ฃ๊ณ ์ ์์๋ฅผ ์ถ๊ฐํ๋ ๊ฒ์ ๋๋ค. ํ๋ก์ธ์ค์ ๋จ๊ณ๋ณ ์ฐ์ต์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.- ์ฉ๋์ด a+n์ธ ์ ๋ฐฐ์ด์ ๋ง๋ญ๋๋ค(a โ ์๋ ๋ฐฐ์ด ์ฉ๋, n โ ์ถ๊ฐํ๋ ค๋ ์์ ์).
- ์ ๊ฐ๋ฟ๋ง ์๋๋ผ ์ด์ ๋ฐ์ดํฐ ๋ฒ์์ ๋ชจ๋ ์์๋ฅผ โโ์ ๋ฐ์ดํฐ ๋ฒ์์ ์ถ๊ฐํฉ๋๋ค.
- ๊ฒฐ๊ณผ ๋ฐฐ์ด์ ์ธ์ํฉ๋๋ค.
// Java Program to add an element in an Array
import java.lang.*;
import java.util.*;
class ArrayDemo {
//Method to add an element x into array myArray
public static int[] addX(int myArray[], int x) {
int i;
// create a new array of a bigger size (+ one element)
int newArray[] = new int[myArray.length + 1];
// insert the elements from the old array into the new one
for (i = 0; i < myArray.length; i++)
newArray[i] = myArray[i];
newArray[myArray.length] = x;
return newArray;
}
public static void main(String[] args) {
int i;
// initial array of size 10
int arr[]
= {0, 1, 2, 45, 7, 5, 17};
// print the initial array
System.out.println("Initial Array: " + Arrays.toString(arr));
// element to be added
int x = 28;
// call the addX method to add x in arr
arr = addX(arr, x);
// print the updated array
System.out.println("Array with " + x + " added:" + Arrays.toString(arr));
}
}
์ถ๋ ฅ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
์ด๊ธฐ ๋ฐฐ์ด: [0, 1, 2, 45, 7, 5, 17] 28์ด ์ถ๊ฐ๋ ๋ฐฐ์ด: [0, 1, 2, 45, 7, 5, 17, 28]
์, ๋ฐฐ์ด์ ์ ์์๋ฅผ ์ถ๊ฐํ๋ ์ด ๋ฐฉ๋ฒ์ด ๊ฐ์ฅ ์ฌ์ด ๋ฐฉ๋ฒ์
๋๋ค.
3. System.arrayCopy() ์ ์ฉ
System.arrayCopy()๋ ์์ค ๋ฐฐ์ด์ ๋์์ ๋ ํฐ ๋ฐฐ์ด์ ํ ๋นํ๋ ๋ฐ ๋๋ฆฌ ์ฌ์ฉ๋๋ ๋ฐฉ๋ฒ์ ๋๋ค. ๊ฐ๋ฐ์๋ ๋ฉ์๋์ ๊ดํธ ์์ ์ ๋ฐฐ์ด์ ๋ณต์ฌํ๋ ค๋ ์ํ์ค๋ฅผ ์ง์ ํ ์ ์์ต๋๋ค. ๋ฐฉ๋ฒ์ด ์ด๋ป๊ฒ ์๋ํ๋์ง ํ์ธํ๊ณ ์ง์ ์ฌ์ฉํด ๋ณด๋ ค๋ฉด ์๋ ์์ ๋ฅผ ์ดํด๋ณด๊ณ ์คํํด ๋ณด์ญ์์ค.
import java.util.Arrays;
class ArrayDemo {
private static Integer[] addElement(Integer[] myArray, int newElement) {
//we create a new Object here, an array of bigger capacity
Integer[] array = new Integer[myArray.length + 1];
System.arraycopy(myArray, 0, array, 0, myArray.length);
array[myArray.length] = newElement;
return array;
}
public static void main(String[] args) {
Integer[] myArray = {20, 21, 3, 4, 5, 88};
System.out.println("myArray before adding a new element: " + Arrays.toString(myArray));
myArray = addElement(myArray, 12);
System.out.println("myArray before adding a new element: " + Arrays.toString(myArray));
}
}
์ถ๋ ฅ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
์ ์์๋ฅผ ์ถ๊ฐํ๊ธฐ ์ ์ myArray: [20, 21, 3, 4, 5, 88] ์ ์์๋ฅผ ์ถ๊ฐํ๊ธฐ ์ ์ myArray: [20, 21, 3, 4, 5, 88, 12]
์ฌ๊ธฐ์์ ์ฐ๋ฆฌ๋ myArray ๋ฐฐ์ด์ ๋ง๋ค๊ณ ์ถ๋ ฅํ๊ณ System.arrayCopy() ์ ๊ตฌ์ถ๋ addElement ๋ฉ์๋๋ฅผ ์ฌ์ฉํ์ฌ ์ ์์๋ฅผ ์ถ๊ฐํ์ต๋๋ค .
4. Apache Commons๋ฅผ ์ฌ์ฉํ์ฌ ์ด๋ ์ด ๋ณต์ฌ
๋นํ์ค ๋ฐฉ์์ ์ฌ์ฉํฉ์๋ค. ์ฆ, ํ์ฌ ๋ผ์ด๋ธ๋ฌ๋ฆฌ Apache Commons lang์ ๋๋ค. ์ฌ์ฌ์ฉ ๊ฐ๋ฅํ Java ๊ตฌ์ฑ ์์์ ๋ชจ๋ ์ธก๋ฉด์ ์ด์ ์ ๋ง์ถ Apache Commons ํ๋ก์ ํธ์ ์ผ๋ถ์ ๋๋ค. ํ๋ก์ ํธ์ ๋ํ ์ง์์ ๋ถํ์ํ์ง ์์ต๋๋ค. Apache Commons lang์๋ ๋ฐฐ์ด ํ์ฅ์ ํ์ฉํ๋๋ก ํน๋ณํ ์ค๊ณ๋ add() ๋ฉ์๋๊ฐ ์์ด ์ฝ๋์ ์๊ฐ๊ณผ ๋ ธ๋ ฅ์ ๋ง์ด ์ ์ฝํ ์ ์์ต๋๋ค. ์ด Apache Commons add() ๋ฉ์๋ ๋ ๊น๋ค๋ก์ด ์ํ์ด๋ ์ธํฐ๋ทฐ ์ง๋ฌธ์ ๋ตํด์ผ ํ๋ ๊ฒฝ์ฐ System.arraycopy() ๋ฉ์๋ ํธ์ถ์ ๊ธฐ๋ฐ์ผ๋ก ํ๋ค๋ ์ ์ ๋ช ์ฌํ ๊ฐ์น๊ฐ ์์ต๋๋ค . ํ๋ก์ ํธ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ถ๊ฐํ๋ ค๋ฉด Apache Commons ์น ์ฌ์ดํธ๋ก ์ด๋ํ์ฌ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ๋ค์ด๋ก๋ํ์ญ์์ค. ๊ทธ๋ฐ ๋ค์ ํ์ผ โ ํ๋ก์ ํธ ๊ตฌ์กฐ โ ๋ผ์ด๋ธ๋ฌ๋ฆฌ > +๋ก ์ด๋ํ์ฌ ๋ค์ด๋ก๋ํ jar ํ์ผ์ ์ ํํฉ๋๋ค.
import org.apache.commons.lang3.ArrayUtils;
import java.util.Arrays;
class ArrayDemo {
private static <T> T[] append(T[] arr, T element) {
return ArrayUtils.add(arr, element);
}
public static void main(String[] args) {
Integer[] myArray = { 0, 1, 2, 3, 4};
System.out.println("myArray: " + Arrays.toString(myArray));
myArray = append(myArray, 5);
System.out.println("new Array with the number added: " + Arrays.toString(myArray));
}
}
์ถ๋ ฅ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
myArray: [0, 1, 2, 3, 4] ์ซ์๊ฐ ์ถ๊ฐ๋ ์ ๋ฐฐ์ด: [0, 1, 2, 3, 4, 5]
5. ArrayCopyOf() ๊ตฌํ
ArrayCopyOf()๋ ๋ฐฐ์ด์ ์ ์์๋ฅผ ์ถ๊ฐํ๋ ๋ ํ๋์ ๋ฐฉ๋ฒ์ ๋๋ค. Apache Commons lang add() ์ ๊ฐ์ด ์ด ์์ ์ ์ํํ๊ธฐ ์ํด ๋ด๋ถ์ ์ผ๋ก System.arraycopy()๋ฅผ ํธ์ถํฉ๋๋ค . ๊ทธ๋ฌ๋ ๋๋ถ๋ถ์ ๊ฐ๋ฐ์๋ ์ฝ๋๋ฅผ ๊ฐ๊ฒฐํ๊ณ ์ฝ๊ธฐ ์ฝ๊ฒ ์ ์งํ ์ ์์ผ๋ฏ๋ก ArrayCopyOf()๋ฅผ ์ ํธํฉ๋๋ค. ๋ค์์ ArrayCopyOf()๋ฅผ ์ฌ์ฉํ์ฌ ๋ฐฐ์ด์ ์ ์์๋ฅผ ์ถ๊ฐํ๋ ์์ ๋๋ค .
import java.util.Arrays;
class ArrayDemo {
private static <X> X[] addElement(X[] myArray, X element) {
X[] array = Arrays.copyOf(myArray, myArray.length + 1);
array[myArray.length] = element;
return array;
}
public static void main(String[] args) {
Integer[] myArray = {20, 21, 3, 4, 5, 88};
System.out.println("myArray before adding a new element: " + Arrays.toString(myArray));
myArray = addElement(myArray, 12);
System.out.println("myArray before adding a new element: " + Arrays.toString(myArray));
}
}
์ถ๋ ฅ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
์ ์์๋ฅผ ์ถ๊ฐํ๊ธฐ ์ ์ myArray: [20, 21, 3, 4, 5, 88] ์ ์์๋ฅผ ์ถ๊ฐํ๊ธฐ ์ ์ myArray: [20, 21, 3, 4, 5, 88, 12]
๊ฒฐ๋ก
๋ฐฐ์ด์ ์์๋ฅผ ์ถ๊ฐํ๋ ๋ฐฉ๋ฒ์ ์๋ ๊ฒ์ ๊ฐ๋ฐ์๊ฐ ๊ธฐ๋ฅ๊ณผ ๊ฐ๋ ์ฑ์ ํฌ์ํ์ง ์๊ณ ์ด์ ์ฝ๋๋ฅผ ๋น ๋ฅด๊ฒ ์ ๋ฐ์ดํธํ๋ ๋ฐ ๋์์ด ๋ฉ๋๋ค. ๋๋ ์ธํฐ๋ทฐ๋ฅผ ํต๊ณผํ๊ธฐ ์ํด. Java ๋ฐฐ์ด์ ์์๋ฅผ ์ถ๊ฐํ๋ ๋ฐฉ๋ฒ์๋ ์ฌ๋ฌ ๊ฐ์ง๊ฐ ์์ผ๋ฏ๋ก ํธํ ๋ฐฉ๋ฒ์ ์์ ๋กญ๊ฒ ์ ํํ์ญ์์ค.
๋ ์ฝ์ด๋ณด๊ธฐ: |
---|
GO TO FULL VERSION