문제

나는 메소드를 호출하는 또 다른 API 를 사용하는 java.util.Collection 의 개체입니다.나는 보았 방법 즉시 복사본에 모든 것을 새로운 컬렉션 ArrayList 를 수행하기 전에 그 작업입니다.

이 나 궁금:무엇이 절대적으로 낮은 오버헤드 Java 컬렉션을 사용할 수 있는 신속하게 조립한 매개변수에 대한 이 방법은?

도움이 되었습니까?

해결책

요소를 복사하는 방법에 따라 다르지만 다음과 같은 ArrayList-copy를 만드는 경우

new ArrayList<Something>(inputCollection);
.

또는

someCopy.addAll(inputCollection);
.

그런 다음 inputCollection.toArray()가 가장 잘 구현하는 ArrayList를 통과합니다.

다른 팁

소스 데이터에 따라 다릅니다.

소스 데이터가 이미 배열이고 배열이 다른 것들에 의해 사용되지 않으면 가장 빠른 방법은 얇은 래퍼를 갖는 것입니다.

final Object[] source = ...

Collection colllection = new AbstractCollection(){
    public Object[] toArray(){ return source; }
    // other methods don't matter
}
.

메모리 발자국에 대해 이야기하는 경우 "NoFollow noreferrer"> 이것을 봅니다. 메모리 측정기 에서 Arrays$ArrayList가 누락되었지만 ArrayList (Arrays.asList(...))의 좋은 대안이 될 수 있습니다.

업데이트 : 나는 GitHub의 프로젝트의 새로운 위치에 원래 링크를 업데이트했습니다.이러한 메트릭스가 수년 중 몇 년이 걸립니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top