remove indexes on Vector / ArrayList

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 + “] 번”);
    }
   }
  }
 }