Java 프로그래밍에서의 HashSet 및 BitSet 상세 정보

1393 단어 JavaHashSetBitSet
Java 프로그래밍에서의 HashSet 및 BitSet 상세 정보
나는 아파치의 개발 메일 리스트에서 아주 재미있는 것을 발견했다. 아파치 커먼스 패키지의 Array Utils 클래스의remove Elements 방법, 원래 사용하던 HashSet이 현재 BitSet으로 바뀌었다.

HashSet<Integer> toRemove = new HashSet<Integer>(); 
for (Map.Entry<Character, MutableInt> e : occurrences.entrySet()) { 
  Character v = e.getKey(); 
  int found = 0; 
  for (int i = 0, ct = e.getValue().intValue(); i < ct; i++) { 
    found = indexOf(array, v.charValue(), found); 
    if (found < 0) { 
      break; 
    } 
    toRemove.add(found++); 
  } 
} 
 
 
return (char[]) removeAll((Object)array, extractIndices(toRemove)); 
새 코드는 다음과 같습니다.

BitSet toRemove = new BitSet(); 
for (Map.Entry<Character, MutableInt> e : occurrences.entrySet()) { 
  Character v = e.getKey(); 
  int found = 0; 
  for (int i = 0, ct = e.getValue().intValue(); i < ct; i++) { 
    found = indexOf(array, v.charValue(), found); 
    if (found < 0) { 
      break; 
    } 
    toRemove.set(found++); 
  } 
} 
return (char[]) removeAll(array, toRemove); 
왜 HashSet 대신 BitSet을 사용했을까요?
Apache Commons 작성자에 따르면 이 코드는 실행할 때 더 적은 메모리를 차지할 수 있고 속도도 더 빠르다고 한다.
읽어주셔서 감사합니다. 여러분에게 도움이 되었으면 좋겠습니다. 본 사이트에 대한 지지에 감사드립니다!

좋은 웹페이지 즐겨찾기