2011-01-14 3 views
4

arraylist와 같은 콜렉션이 수천 개의 사용자 정의 객체 (예 : 여러 속성을 가진 Person)를 저장할 경우, 내 코드 또는 콜렉션 생성자에서 수행 할 작업이 있습니까 이렇게 큰 수집을 준비하십시오.많은 수의 객체를 보유하기위한 튜닝 콜렉션

나는 정말로 전용 스레드 등을 생각하지 않지만 부하 요소의 라인을 따라 더 많이 생각합니다 (위의 시나리오에서이 부분을 만져야합니까?).

감사

+0

정말 실제 컬렉션 구현에 크게 의존합니다. ArrayList는 실제로 내부적으로 사소한 일이며 적절한 초기 크기를 선택하는 것 외에는 할 일이별로 없습니다. 다른 유형의 수집 구현에는 많은 고려 사항이있을 수 있습니다. – Affe

답변

6

:

List<Person> persons = new ArrayList<Person>(1024); 
8

당신은 할 수 있습니다 :

지정된 크기와 배열을 미리 할당
new ArrayList<T>(10000); 

(예를 들어, 10000)은 필요가 없습니다 있도록 요소를 추가로 다시 할당 할 수 있습니다. 그 외에는 할 수있는 일이 없습니다. 또한 ArrayList에 어떤 종류의 참조가 저장되는지는 중요하지 않으므로 정보가 실제로 최적화에서 도움이되지 않습니다.

난 그냥 resizings의 수를 최소화하기 위해 최종 크기에 가까운 것 크기로 컬렉션을 초기화 할 것
11

다른 접근 방법 : 우리가이기 때문에

을 당신이해야 할 때만이 컬렉션을 데이터베이스에 저장하고 읽기/쓰기/업데이트를 고려해야한다고 생각합니다.

+3

동의합니다. 아마도 컬렉션의 크기가 극적으로 증가 할 것이고, RAM은 유지할 수 없을 것입니다. –

관련 문제