2013-06-04 2 views
-2

내가 컬렉션에 새로운 오전과 나는 사소한 질문에 대한 미리 미안하지만 난"A List는 주문한 콜렉션입니다 ..."란 의미는 무엇입니까?

목록 정렬 된 컬렉션입니다 자바 튜토리얼에서 읽고 한 문장에 숙고 된 (때로는 시퀀스라고). 내가 이해 한 내용을

내가 목록의 요소를 넣어, 그것은 나를 위해 자동 주문을한다는 것을 내가 간단한 코드를 실행하기 때문에, 내가 잘못 입증 :

List <String> list = new ArrayList<String>(); 

list.add("Chris"); 
list.add("Brian"); 
list.add("Matt"); 
list.add("Greg"); 

for (Iterator<String> it = list.iterator();it.hasNext();) { 
    System.out.print(it.next()+"\n"); 
} 

하는 이 결과는 어떤 방식으로 정렬되지 않는 :

그래서 제 질문은 무엇을 의미한다
Chris 
Brian 
Matt 
Greg 

"목록이 정렬 된 모음입니다"?

덕분에

+6

매우 주문되었습니다. 당신은'ordered'와'sorted '를 혼동하고 있습니다. – Keppil

+1

반복 할 때 항목을 가져 오는 순서는 항목을 삽입 한 순서와 동일합니다. –

+0

@Keppil "ordered"는 일반적으로 삽입 순서, 사전 편집 순서, 무작위 순서 또는 기타 항목에 의해 정렬 될 수 있습니다. 이 문맥에서만 "주문 됨"은 "주문 순서에 따라 정렬 됨"을 의미합니다. – delnan

답변

0

그들은 당신이에 넣어 순서대로 정렬됩니다.하지 알파벳이나 숫자와 같이 분류. 정렬되지 않은 목록 (컬렉션)은 가방에서 구슬을 가져 오는 것과 같습니다.

+0

... hashbag에서 ​​구슬을 가져옵니다 – AlexWien

1

정렬 된 것은 각 요소에 인덱스가 할당되고 해당 인덱스에서 참조 할 수 있음을 의미합니다. Set에서는 사물에 인덱스가 없습니다.

분류 의미하지 않는다 순서가
+0

ArrayList 만 인덱스를 제공합니다. 예를 들어, LinkedList는 n 번째 요소를 얻기 위해 목록을 반복해야하므로 "인덱스"작업이 매우 느려집니다. – Joel

+0

작업이 느릴 수는 있지만 정의되어 있습니다. 정렬되지 않은 콜렉션에 대한 색인의 개념은 정의되지 않습니다. – waldol1

4

, 그것은 항목이 당신이에 넣어 순서대로 표시됩니다 것을 의미한다.이 말에 대조적이다

, 항목은 주문할 수 없습니다 SortedSet의를 순서를 정하는 순서에 따라 정렬되거나, 해시 함수에 따라 순서에 관계없이 나타날 수있는 HashMap에 따라 정렬됩니다.

+0

정렬 된 집합 만 항목을 정렬 된 순서로 제공합니다. 예를 들어'HashSet '은 순서를 지정하지 않습니다. – yshavit

+0

메모리 방귀. 편집 됨 – Joel

0

simpy는 개체를 특정 순서로 놓으면 그 순서대로 유지된다는 것을 의미합니다. 귀하의 이름이 귀하의 이름과 같은 순서로 나타나는지 확인하십시오.

(내부적으로 순서가 없기 때문에) 임의의 순서로 나온 세트 (다른 ​​유형의 컬렉션)와 비교하십시오. 이것은 성능상의 이점을 줄 수 있으며, 순서를 사용하는 것이 중요하지 않은 경우 집합을 사용하는 것이 중요하다면 목록을 사용하십시오.

4

목록은 순서가 지정된 컬렉션 (시퀀스라고도 함)입니다.

이것은 목록이 요소의 순서를 유지한다는 것을 의미합니다. 즉, 추가하는 첫 번째 요소는 인덱스 0에 남아 있습니다. 추가하는 두 번째 요소는 인덱스 1에 남아 있습니다.

요소를 제거하면 제거 된 요소 뒤에있는 요소가 해당 인덱스 위치를 변경하지만 나머지 요소는 동일한 순서로 유지됩니다.

+0

주문을 지정하여 추가 할 수 있습니다. 'add (a); add (0, b); add (1, c); add (0, d);'그들은 결국 d, b, c, a로 끝난다. –

+0

@ Lee Meador : 초기 삽입물에는 없습니다. 인덱스가 범위 외의 경우 (index <0 || index> size()), IndexOutOfBoundsException가 발생합니다. 위치가있는 추가는 삽입과 동일합니다. 내가 입력 한대로 의견을 변경했습니다. 변경하면 순서가 올바르게됩니다. –

+0

나를 붙 잡았습니다. 나는 그것을 충분히 빨리 고정 시켰지만. 나는 한 순간에 끝까지 지나칠 수 없다는 사실을 잊어 버렸습니다. –

관련 문제