클래스의 기능 목록을 유지 관리하는 클래스가 있습니다. 이러한 기능은 읽기와 비교하여 드물게 변경됩니다. 읽기는 거의 항상 기능 목록을 통한 반복입니다. 이 때문에 나는 CopyOnWriteArrayList
을 사용하고 있습니다.Java의 CopyOnWriteArrayList에서 기본 정적 배열을 어떻게 가져 옵니까?
function Feature[] getFeatures() {
.. implementation goes here ..
}
내가 인정이, 이유는 게으름의 비트 수 있습니다 :
는이 같은 기능을 갖고 싶어. 나는 다음과 같은 코드를 작성하고 싶습니다 :
이보다는for (Feature f: object.getFeatures()) {
.. do something interesting ..
}
:
Iterator<Feature> iter = object.getFeatureIterator();
while (iter.hasNext()) {
Feature f = iter.next();
.. do something interesting ..
}
주요 질문입니다 - 내가 여기 게으른 것입니까? 이 패턴을 많이 따르겠습니다. 코드의 첫 번째 부분은 유지하기가 훨씬 쉽습니다. 분명히, 나는 기본 배열을 변경하지 않을 것이며, 나는 이것을 문서에 넣을 것이다.
이 상황을 처리하는 적절한 방법은 무엇입니까?
'Collections.unmodifiableList'는 동일한 기본 배열을 통해 반환되는'List'에 복사합니까? –
아니요. 모든 읽기 전용 작업을 래핑 된 목록 (size(), get() 등)에 위임하고 모든 수정 메서드 (set(), add() 등). –