Iterable을 구현하는 클래스가 필요하며 동시 사용에는 안전 할 필요가 없습니다. 가장 가벼운 LinkedList, HashSet, ArrayList 등의 다양한 옵션 중에서?Java의 가장 가벼운 비 동시성 Iterable 구현은 무엇입니까?
유스 케이스를 명확히하기 위해 Iterable (일반적으로 3 또는 4)에 여러 객체를 추가 할 수 있어야합니다. 그런 다음 다른 객체를 반복해야합니다.
Iterable을 구현하는 클래스가 필요하며 동시 사용에는 안전 할 필요가 없습니다. 가장 가벼운 LinkedList, HashSet, ArrayList 등의 다양한 옵션 중에서?Java의 가장 가벼운 비 동시성 Iterable 구현은 무엇입니까?
유스 케이스를 명확히하기 위해 Iterable (일반적으로 3 또는 4)에 여러 객체를 추가 할 수 있어야합니다. 그런 다음 다른 객체를 반복해야합니다.
전적으로 "가장 가벼운 무게"의 의미에 따라 다릅니다. 어떤 작업을해야하며 얼마나 자주합니까? 미리 최종 크기를 알고 있습니까? 실행 시간이나 메모리를 절약하려고합니까?
나는 ArrayList
이 매우 좋은 선택이라고 동의합니다 ...하지만 큰 컬렉션을 만들고 나서 첫 번째 요소를 반복적으로 제거하려는 경우 매우 좋지 않을 것입니다. 많은 다른 컬렉션이 존재해야하는 좋은 이유가 있습니다. 서로 다른 상황에 대해 서로 다른 성능 특성을 가지고 있습니다.
그들은 모두 매우 다른 기능과 동작을 가지고 있으므로 사용 방법에 따라 선택해야합니다. 예를 들어, 무작위 액세스 및 높은 지역에 대해 ArrayList를 사용합니다. 정렬되지 않은 빠른 삽입과 질의가 필요하다면 HashSet을 사용하십시오.
'lightweight'로 '최상의 성능'을 의미하는 경우 컬렉션 사용 방법을 이해하지 않고도 대답하는 것이 거의 불가능합니다. 이 동시 사용을 지원하기 위해 필요로하지 않지만, 질문에 대답의 희망을 위해 우리가 얼마나 많은 개체가 될 것입니다
을 요구 필요 있다 베스트. 그러나 특정 패턴의 사용 패턴의 경우 임의 액세스의 페널티가 발생하지 않기 때문에 Queue이 List보다 성능이 우수하다는 것을 알 수 있습니다 (Effective Java 2 판). 즉, 임의의 순서로 목록에 항목을 추가/제거 할 수 있지만 대기열에있는 항목을 특정 순서 (예 : 꼬리 추가 및 머리에서 제거)로만 추가/제거 할 수 있습니다.
가벼운 무게는 무엇을 의미합니까? 체중을 어떻게 측정합니까? –
벤치 마크 결과는 무엇입니까? – starblue