remove indexes on arraylist, vector
IS-A 혹은 HAS-A 고려하여 멤버함수로 만든 것.
/**
* 인덱스 숫자 리스트를 넘겨서 일괄 지운다.
* @param removeIdxList
*/
public void remove(Vector removeIdxList, LogWriter _logger) {
// 삭제할 인덱스 리스트 비었을 경우 그만둔다.
if (removeIdxList == null || removeIdxList.size() == 0) {
return;
}
// 삭제할 인덱스 리스트 정렬
Collections.sort(removeIdxList);
int idxPreDel = -1;
int count = removeIdxList.size();
int idx = 0;
int lastIdx = count – 1;
for (int i=lastIdx; i>=0; i–) {
idx = (Integer) removeIdxList.get(i);
if (idxPreDel != idx) {
list.remove(idx);
idxPreDel = idx;
} else {
// 이미 지운 인덱스는 스킵한다.
// 한 번 지운 인덱스를 또 지우면 해당 번호 이후로 모두 한 칸씩 땡겨지게 되는 치명적 버그가 생긴다.
if (_logger != null) {
_logger.error(“remove : 이미 지운 인덱스 번호는 스킵한다. [” + idx + “] 번”);
}
}
}
}