답변
컬렉션의 항목 순서가 중요하지 않은 경우 집합은 컬렉션에서 항목을 찾는 데 더 나은 성능을 제공합니다.
그 이유는 집합이 항목 (사전과 같은)을 찾기 위해 해시 값을 사용하는 반면 배열은 특정 객체를 찾기 위해 전체 내용을 반복해야하기 때문입니다.
답변
Apple 문서 의 이미지 는이를 매우 잘 설명합니다.
Array
되는 순서 요소의 순서를 (추가 할 때 순서는 유지됩니다)
[array addObject:@1];
[array addObject:@2];
[array addObject:@3];
[array addObject:@4];
[array addObject:@6];
[array addObject:@4];
[array addObject:@1];
[array addObject:@2];
[1, 2, 3, 4, 6, 4, 1, 2]
Set
A는 없다 구별 (중복 없음) 정렬되지 않은 요소 목록
[set addObject:@1];
[set addObject:@2];
[set addObject:@3];
[set addObject:@4];
[set addObject:@6];
[set addObject:@4];
[set addObject:@1];
[set addObject:@2];
[1, 2, 6, 4, 3]
답변
이에 대한 가장 좋은 대답은 Apple의 자체 문서 입니다.
주요 차이점은 NSArray
정렬 된 컬렉션과 NSSet
정렬되지 않은 컬렉션에 대한 것입니다.
거기 여러 기사와 같은 둘 사이의 속도 차이에 대한 그 이야기가 있습니다 이 하나 . 순서가 지정되지 않은 컬렉션을 반복하는 경우 NSSet
좋습니다. 그러나 대부분의 경우, 당신은 오직 한 사람 만이 할 NSArray
수있는 일을해야하기 때문에 그러한 능력을 위해 속도를 희생해야합니다.
NSSet
- 주로 비교를 통해 항목에 액세스
- 정렬되지 않음
- 중복 허용 안함
NSArray
- 인덱스로 항목에 액세스 할 수 있습니다.
- 주문
- 중복 허용
그게 전부입니다! 도움이되는지 알려주세요.
답변
NSOrderedSet은 iOS 5 이상에서 사용할 수 있으므로 데이터 구조에서 중복 객체를 원하는지 여부가 주요 차이점입니다.
답변
NSArray :
- 정렬 된 데이터 수집
- 중복 허용
- 컬렉션 형 객체입니다
NSSet :
- 정렬되지 않은 데이터 수집
- 중복 허용 안함
- 또한 컬렉션 유형 객체입니다.
답변
배열은 인덱스로 항목에 액세스하는 데 사용됩니다. 모든 항목을 배열에 여러 번 삽입 할 수 있습니다. 배열은 요소의 순서를 관리합니다.
세트는 기본적으로 항목이 컬렉션에 있는지 여부를 확인하는 데만 사용됩니다. 항목에는 순서 또는 인덱싱 개념이 없습니다. 한 세트의 아이템을 두 번 가질 수 없습니다.
배열에 요소가 포함되어 있는지 확인하려면 모든 항목을 확인해야합니다. 세트는 더 빠른 알고리즘을 사용하도록 설계되었습니다.
값이없는 사전과 같은 집합을 상상할 수 있습니다.
배열과 집합이 유일한 데이터 구조는 아닙니다. 큐, 스택, 힙, 피보나치의 힙과 같은 다른 것이 있습니다. 알고리즘과 데이터 구조에 대한 책을 읽는 것이 좋습니다.
자세한 내용은 wikipedia 를 참조하십시오.
답변
NSArray *Arr;
NSSet *Nset;
Arr=[NSArray arrayWithObjects:@"1",@"2",@"3",@"4",@"2",@"1", nil];
Nset=[NSSet setWithObjects:@"1",@"2",@"3",@"3",@"5",@"5", nil];
NSLog(@"%@",Arr);
NSLog(@"%@",Nset);
어레이
2015-12-04 11 : 05 : 40.935 [598 : 15730] (1, 2, 3, 4, 2, 1)
세트
2015-12-04 11 : 05 : 43.362 [598 : 15730] {(3, 1, 2, 5)}
