그냥 List를 쓰면 더 편하지만
가끔 배열을 사용해야할때가 있다. 이번에 프로젝트를 하면서 문자열을 ,로 split하여
갖고온 데이터를 배열에 넣어서 합쳐야할 상황이 있었다.
그래서 배열을 하나로 합치는 System.arraycopy를 포스팅합니다.
//영업부서 지원부서번호 다 가져옴
ArrayList<Map<String, Object>> getDeptList = (ArrayList<Map<String, Object>>) workEvaluationDAO.getTargetDeptList(getDept);
String[] strArr = ((String) getDeptList.get(0).get("target_seq_array")).split(",");
String[] strArr2 = ((String) getDeptList.get(1).get("target_seq_array")).split(",");
String[] strAdd = new String[strArr.length+strArr2.length];
System.arraycopy(strArr, 0, strAdd, 0, strArr.length);
System.arraycopy(strArr2, 0, strAdd, strArr.length, strArr2.length);
String temp = "AND (";
for(int i=0; i<strAdd.length; i++) {
if(i!=strAdd.length-1) {
temp += " AA.dept_seq = "+strAdd[i] + " or ";
}else {
temp += " AA.dept_seq = "+strAdd[i];
}
}
temp += ")";
두개의 상위부서에있는 하위 부서들의 번호를 다 가져오고 이를 하나의 배열로 만드는 작업이었다.
그리고 그 하위 부서들의 번호를 가지고 동적 쿼리에 적용했었다.(좋지 않은 방법이긴 하지만 떠오른는 방법이 없었다...)
System.arraycopy는 자바 배열의 갑승ㄹ 복사할 경우 사용한다.
형식 : arraycopy(Object arr, int arrStart, object resultArr, int resultStart, length)
파라미터 :
arr = 복사하고자 하는 배열
arrStart = arr의 복사를 어디서부터 할것인지
resultArr = 복사한 배열을 넣을 배열
resultStart = resultArr의 어디부터 넣을것인지
length = 복사하고자 하는 배열의 요소 갯수
'Java' 카테고리의 다른 글
[Java] 페이지네이션 함수 만들기 (0) | 2022.09.09 |
---|---|
[Java]Lucy-xss-filter-servlet 적용하기 (0) | 2022.08.02 |
[Java] ModelAndView와 String 리턴 (0) | 2020.06.16 |