2010-03-06 4 views

답변

11

일반적으로 작업에 적합한 데이터 구조를 선택하는 것이 좋습니다. 당신은 현재 가지고있는 당신의 작업은 물론 당신이 가지고있는 모든 다른 옵션들과 그것들이 반복의 관점에서 어떻게 비교되고, 검색되고, 추가되고, 제거되고, 삽입되는지를 이해할 필요가 있습니다. 일반적으로 데이터 구조가 메모리에 액세스하고 조작하는 방법을 이해하고 응용 프로그램이 어떻게 사용되는지 예상하는 방법에 따라 최상의 데이터 구조를 선택해야합니다.

분명히 항상 명확한 것은 아닙니다. 그러나 서로 다른 데이터 구조에 대한 이상을 이해할 수 있습니다.

예를 들어, 검색 할 필요없이 반복 만하는 순수 정적 고정 길이 데이터는 배열에 이상적입니다. 암호화 알고리즘에서 이러한 배열을 사용하는 것이 일반적입니다. 데이터가 정적이지만 iterating 대신 검색해야하는 경우 일부 유형의 트리 구조가 필요할 수 있습니다. 빠른 삽입을 원하면 해싱이 이상적 일 수 있습니다. 데이터가 자주 변경되는 경우 목록처럼 크기를 효율적으로 변경하는 구조가 필요합니다.

물론 다양한 종류의 특정 문제를 해결하기 위해 설계된 다양한 변형 및 데이터 구조가 있습니다. 너무 많은 이유는 효과적인 프로그램을 작성하는 데있어서 그들이 중요하기 때문입니다. 어쨌든, 요점은, 데이터 구조에 대해 배웁니다. 각각의 이상적인 상황을 이해하면 모든 작업에 적합한 데이터 구조를 결정하거나 설계 할 수 있습니다.

2

목록의 크기가 쉽게 커질 수 있으며 목록 중간에있는 요소를 쉽게 추가하고 제거 할 수 있습니다. 그것은 배열로 할 수 없습니다. 당신은 당신이 비록 목록을 필요로하는지 생각할 필요가 있습니다. 목록이 많이 바뀔 것으로 생각하지 않는다면 대신 배열을 사용하십시오. 당신은 요소 수에 대한 사전에 지식이없는 경우

+1

자동 크기 조정이 유일한 이유는 아닙니다. List는 모든 Collections API 장점에 참여하므로 API를 사용하여 대부분의 데이터 구조 관련 문제를 해결할 수 있습니다. – cherouvim

2

Array vs ArrayList에서의 ArrayList는 사용에 배열보다 낫다. ArrayList가 Arrays보다 느립니다. 따라서 효율성이 필요한 경우 가능한 경우 배열을 사용해보십시오.

0

편집 : 어떤 경우에
기본 유형, 처리의 더 나은 Arraylists의 경우, 그 처리에 비해 조금 느려질 수 있습니다 권투와 프리미티브의 개봉기를 포함하기 때문에 배열로 이동합니다 배열이있는 프리미티브

+0

물론 배열의 요소 유형을 지정할 수 있습니다. –

+0

myList를 구체적인 유형 (ArrayList)으로 선언하지 마십시오. 인터페이스 목록을 사용하는 것이 가장 좋습니다. – cherouvim

+0

필드가 공용 API가 아닌 경우 List 또는 ArrayList를 사용하면 문제가되지 않습니다. 예를 들어, 안드로이드에서는 List 인터페이스보다 ArrayList 콘크리트 유형에 대한 메소드를 호출하는 것이 적다. 내 개인 필드를 구체적인 유형으로 선언하고 공용 API (getters 등)에 인터페이스를 반환하는 경향이 있습니다. – NateS

0

Java Collections 클래스는 특정 시나리오에 대한 최적화보다 일반적인 용도로 사용하기 쉽다는 점을 기억해야합니다. 따라서 이전 응답자가 말한 것처럼 실제로 어떻게 사용할지 고려해야합니다.

예를 들어 "대형"데이터 구조를 만드는 경우 ArrayList는 매우 비효율적 일 수 있습니다. 배열의 한계에 도달 할 때마다 크기의 2 배 크기로 새 배열을 할당합니다. 따라서 평균적으로 ArrayList는 75 % 만 사용됩니다.

일반적으로 Java Collections는 일반적으로 항상 좋은 첫 번째 추정치이며, 측정 가능한 성능 문제가있는 경우 대체적이고보다 특수화 된 Collection 구현을 사용할 준비가되어 있어야합니다.

언급 한 경우 ArrayList를 배열을 다루는보다 편리한 방법으로 생각할 수 있습니다.

0

List, ArrayLists 등을 사용합니다. 왜냐하면 Sun은 이미 저를 위해 그 이후로 다음 빈 슬롯이 어디에 있는지, 또는 충분히 큰지 걱정할 필요가 없기 때문입니다.

관련 문제