현재로서는 List<short>
을 버퍼로 사용하여 잠시 동안 버퍼를 유지하면서 버퍼의 다른 값을 기반으로 각 값을 계산합니다. 나는 그때 내가 아마도 whatever = myList[100];
을 할 때마다 List<>
이 연결된리스트라는 말을 들었을 때 이것이 매우 효과적이지 않다는 것을 깨달았습니다. 불쌍한 점은 내가 원하는 값으로 가기 위해 다른 모든 노드를 먼저 뛰어 넘어야한다는 것입니다. 나는 Add()
과 Remove()
의 부하를 코드의 다른 위치에서 사용하고 있기 때문에 일반 배열을 사용하고 싶지 않습니다. 따라서 IList<T>
을 상속하지만 일반 배열 데이터 구조를 사용하는 클래스가 필요합니다. 누구든지 이런 식으로 작동합니다 .net 내 클래스를 알고 그래서 내 자신을 작성하지 않아도됩니까? 나는 ArrayList를 사용하여 시도했지만 그것은 일반적이지 않다!목록 데이터 구조 C# 효율성
답변
아니요, List<T>
은 연결 목록이 아닌 일반 모음입니다. 기능을 추가 및 제거해야하는 경우 대부분 List<T>
구현이 기본값입니다.
좋아, 내 생각에 List <>가 연결된 목록이 잘못 되었음 :( –
)이 경우에 일반 배열을 사용하는 이유가 있다면 그럴 수 있습니까? –
고정식 번호 및 객체 모음 – thecoop
List<T>
은 연결된 목록 구현을 사용하지 않습니다. 내부적으로는 배열을 사용하기 때문에 필요로하는 것과 정확히 일치합니다. 배열이기 때문에 목록의 크기와 제거/삽입되는 위치 항목 (O (n))에 따라 Remove/insert가 값 비싼 연산이 될 수 있습니다. 그러나 어떻게 사용하고 있는지에 대해 알지 못하면 더 나은 데이터 구조를 추천하기가 어렵습니다.
docs의 비고 섹션에서 인용하십시오.
List (T) 클래스는 ArrayList 클래스의 일반적인 기능입니다. 그것은 필요에 따라 동적으로 크기가 증가하는 배열을 사용하여 IList (T) 제네릭 인터페이스를 구현합니다.
List<T>
은 연결된 목록이 아닌 배열로 지원됩니다. List<T>
의 인덱싱 된 액세스는 일정한 시간 내에 발생합니다.
tvanfosson의 정답뿐 아니라 무언가가 내부적으로 어떻게 작동하는지 잘 모르는 경우 .NET Reflector을로드하면 정확하게 구현 된 것을 볼 수 있습니다. 당신이 this._items[index]
은 제네릭 형식 T
의 배열입니다 것을 볼 수 있습니다
public T this[int index]
{
get
{
if (index >= this._size)
{
ThrowHelper.ThrowArgumentOutOfRangeException();
}
return this._items[index];
}
// ...
이 경우, List<T>
의 인덱서 드릴 다운하는 것은 우리에게 다음과 같은 코드를 보여줍니다.
Reflector는 더 이상 무료가 아니므로 [ILSpy] (http://ilspy.net/) 및 [DotPeek] (http://www.jetbrains.com/decompiler/)은 다른 무료 대안입니다. –
- 1. 데이터 구조 - 목록
- 2. C++ 데이터 구조 시각화
- 3. 여러 목록/컬렉션에있는 개체를 사용하는 C# serializing 데이터 구조
- 4. WordPress 데이터 저장 효율성
- 5. 파이썬 목록 조회 오브젝트 이름, 효율성 조언
- 6. C# 프로그램의 C/C++ 데이터 구조 사용
- 7. 2d C#의 데이터 구조
- 8. C++의 영구 데이터 구조
- 9. C#의 다차원 데이터 구조
- 10. C#의 동적 데이터 구조
- 11. C++ 일반 테이블 데이터 구조
- 12. C#의 다차원 데이터 구조
- 13. C#의 에이징 데이터 구조
- 14. C++의 기능적 데이터 구조
- 15. 높은 수준의 데이터 구조
- 16. 데이터 구조 선택
- 17. ScrollView의 유연성을 이용한 목록 뷰의 효율성
- 18. 데이터 구조
- 19. 효율성 : 어떤 데이터 구조를 사용해야합니까?
- 20. 데이터 구조 배열
- 21. 최첨단 데이터 구조
- 22. AS3 - 목록 구조 구성
- 23. 트리 : 연결된 목록 대 배열 (효율성)
- 24. C# 계층 구조 구조
- 25. Python의 데이터 구조
- 26. 효율성
- 27. 캐시 데이터 목록 asp.net C#
- 28. 어색한 데이터 구조
- 29. C# 데이터 구조 질문 (사용할 컬렉션)
- 30. C++ 수치 해석 정확한 데이터 구조?
솔직히 나는 효율성에 대해 너무 많이 강조해야한다고 생각하지 않습니다. 당신이 얻는 이익은 거의 눈에 띄지 않을 것입니다. – lomaxx
'List <>'는 링크드리스트가 아닙니다. 그러나'LinkedList <> '는 그렇습니다. 연결된 목록에서 임의 액세스를 노출하는 것은 의미가 없기 때문에이를 알 수있었습니다. – Dykam
목록에 대한 색인 액세스는 O (1) 작업입니다. – digEmAll