배열은 선언과 동시에 크기가 정해진다.
이는 선언된 배열에 새로운 데이터를 추가하려 할 때 단점으로 작용한다.
배열복사는 이를 해결하는 기법의 하나로,
보다 큰 배열을 새로 만들고, 이전배열로부터 데이터를 복사하는 것이다.
for문을 이용하거나, system.arraycopy() 메소드를 이용한다.
문제) for문을 이용하여 출력예와 같이 출력 (배열복사 이용)
출력예)
[변경전]
arr.length : 5
arr[0] : 1
arr[1] : 2
arr[2] : 3
arr[3] : 4
arr[4] : 5
[변경후]
arr.length : 10
arr[0] : 1
...
arr[4] : 5
arr[5] : 0
...
arr[9] : 0
package sample;
public class Sample
{
public static void main(String[] args)
{
int[] arr = new int[5];
int i;
System.out.println("[변경전]");
System.out.println("arr.length : " + arr.length);
for( i=0; i<arr.length; i++)
{
arr[i] = i+1;
System.out.println("arr[" + i + "] : "+ arr[i]);
}
int[] tmp = new int[arr.length*2];
for( i=0; i<arr.length; i++)
{
tmp[i] = arr[i];
}
arr = tmp;
System.out.println("[변경후]");
System.out.println("arr.length : " + arr.length);
for( i=0; i<arr.length; i++)
{
System.out.println("arr[" + i + "] : " + arr[i]);
}
}
}
문제) 다음의 결과를 출력 (배열복사이용)
ABCD
0123456789
ABCD0123456789
ABCD456789
ABCD45ABC9
package sample;
public class Sample
{
public static void main(String[] args)
{
char[] abc = new char[]{'A','B','C','D'};
char[] num = new char[]{'1','2','3','4','5','6','7','8','9'};
System.out.println(abc);
System.out.println(num);
char[] plus = new char[abc.length + num.length];
System.arraycopy(abc, 0, plus, 0, abc.length);
System.arraycopy(num, 0, plus, abc.length, num.length);
System.out.println(plus);
System.arraycopy(abc, 0, num, 0, abc.length);
System.out.println(num);
System.arraycopy(abc, 0, num, 6, abc.length-1);
System.out.println(num);
}
}
'자바 JAVA' 카테고리의 다른 글
2차원 배열을 이용한 예제 풀이 - 자바 기초 (0) | 2021.05.26 |
---|---|
간단한 번호추첨 프로그램 작성 예제 - 자바 기초 (0) | 2021.05.24 |
배열을 이용한 예제풀이 2 - 자바 기초 (0) | 2021.05.23 |
배열을 이용한 예제풀이 ㅡ 자바 기초 (0) | 2021.05.22 |
while문 이용 예제풀이 - 자바 기초 (0) | 2021.05.22 |