2012-03-06 4 views
1

가능한 중복 :
ArrayList Vs LinkedList
ArrayList vs. LinkedList which one is better for sorting의 ArrayList 나 LinkedList의

우리는 100 개 문자열 (이름)이 있고 ArrayList를하고 LinkedList의에서 선호되는 한, 그 (것)들을 정렬한다고 가정 환경 설정의 이유는 무엇입니까?

+2

요소가 100 개 밖에 없기 때문에, 당신이 선택한 차이점을 거의 눈치 채지 못합니다. – skaffman

+0

@ skaffman..that understand ... 그러나 나는 일반적인 대답을 찾고 있었고, 예를 들어서 만 100을 택했다 ... 내가 백만을 예제로 취했을 수도있다 ... 입력에 대한 감사 –

답변

2

어떤 종류의 정렬 이냐에 따라 다릅니다.

처음에 많이 삽입/검색/제거하려고하면 ArrayLists가 느립니다. (큰 리플)

색인에 삽입/검색/제거하려는 경우 LinkedLists가 느립니다. 당신에게 작업 목록의 각 유형에 대해 얼마나 빨리의 아이디어를 제공

+0

감사합니다. info.even이 또한 내가 찾고 있어요 –

+1

처음부터 정렬 알고리즘을 구현하는 데 시간을 낭비하지 않는 한,이 정보는 도움이되지 않습니다. 그렇게해도 목록을 배열에 복사하고 배열을 정렬하면보다 효율적인 정렬을 얻을 수 있습니다. –

+0

@StephenC 자신의 정렬을 구현하는 것이 시간 낭비인지 확신 할 수 없습니다. – varatis

1

구현 선택은 발생하는 작업을 기반으로해야합니다.

here을 참조하십시오.

6

Collections API를 사용하여 정렬하는 것은 중요하지 않습니다. 당신은 Collections.sort의 구현을 살펴 걸릴 경우

  1. List.toArray
  2. 사용 Arrays.sort 방법을 사용하여 목록의 사본을 만듭니다

    public static <T extends Comparable<? super T>> void sort(List<T> list) { 
        Object[] a = list.toArray(); 
        Arrays.sort(a); 
        ListIterator<T> i = list.listIterator(); 
        for (int j=0; j<a.length; j++) { 
         i.next(); 
         i.set((T)a[j]); 
        } 
    } 
    

    당신은 그 다음을 수행 볼 수 있습니다 배열을 정렬하십시오.

  3. 목록을 업데이트하십시오 (예 : 배열을 목록으로 복사).
+0

심지어 나는 같은 것을 생각했다. .. 의심을 깨끗하게하는 것에 대해 감사해라!! –