상세 컨텐츠

본문 제목

[System] 배열 병합 arraycopy(src,srcPos,dest,length) 예제

Java

by kwanghyup 2020. 6. 17. 15:17

본문

import java.util.Arrays;

public class ArrayMerger {
    public static void main(String[] args) {
        String[] mergered1 = {"1","2","3"};
        String[] mergered2 = {"a","b","c","d","e","f"};
        String[] mergered3 = {"가","나","다","라"};

        String[] copied  = new String[mergered1.length+mergered2.length+mergered3.length];

        System.arraycopy(mergered1,0,copied,0,mergered1.length);
        System.arraycopy(mergered2, 0,copied,mergered1.length,mergered2.length);
        System.arraycopy(mergered3,0,copied,mergered1.length+mergered2.length,mergered3.length);

        System.out.println(Arrays.toString(copied));
        
         /*
            arraycopy(Object src, int srcPos, Object dest, int destPos, int length);
            scr : 원본 배열
            scrPos : 원본배열을 어디서 부터 복사할지 그 위치(index) 결정
            dest : 사본배열
            dest : 복사한 요소를 사본배열의 어느 위치(index)부터 채울지 결정
            length : 원본배열에서 지정한 위치로부터 순차적으로 몇개의 요소를 복사할 지 결정
        */
    }
}

 

for반복문, 가변인자를 통해 배열을 순서대로 병합하는 함수 

import java.util.Arrays;

public class ArrayMerger {
    public static void main(String[] args) {
        String[] mergered1 = {"1","2","3"};
        String[] mergered2 = {"a","b","c","d","e","f"};
        String[] mergered3 = {"가","나","다","라"};
        String[] mergered4 = {"Aa","Bb","Cc"};

        String[] generatedArray = mergerArray(mergered1,mergered2,mergered3,mergered4);
        System.out.println(Arrays.toString(generatedArray));
        
    }

    public static String[] mergerArray(String[] ... mergered){
        
        // 배열 길이 결정
        int length = 0;
        for (int i = 0; i < mergered.length-1 ; i++) {
            if(i==0) length = mergered[0].length+mergered[1].length;
            else length += mergered[i+1].length;
        }
        String[] generated = new String[length];

        // 배열 병합
        int index = 0;
        for (int i = 0; i <mergered.length-1 ; i++) {
            if (i==0){
                System.arraycopy(mergered[0],0,generated,0,mergered[0].length);
            } else {
                index += mergered[i-1].length;
                System.arraycopy(mergered[i],0,generated,index,mergered[i].length);
                System.arraycopy(mergered[i+1],0,generated,index+mergered[i].length,mergered[i+1].length);
            }
        }
        return generated;
    }
}

 

Collection List를 사용하는 방법 

https://k-develpoper.tistory.com/114

 

[Collection : List] 배열 병합 addAll()

import java.util.ArrayList; import java.util.Arrays; import java.util.List; public class ArrayMerger { public static void main(String[] args) { String[] mergered1 = {"1","2","3"}; String[] mergered2..

k-develpoper.tistory.com

 

 

관련글 더보기

댓글 영역