2010-02-21 3 views
2

개체가있는 목록이 있습니다. 각 개체에는 ID가 있습니다. ID가 주어진 컬렉션에 나타나는 모든 개체를 제거하고 싶습니다. 3.5에서 검색을 용이하게하고 제거 할 수있는 RemoveAll과 같은 기능이 있음을 알고 있습니다..NET 3.5 : 3.5 함수를 사용하여 목록에서 제거하는 방법

함수의 프로토 타입은 다음과 같습니다

internal SomeObject removeFromMe(Dictionary<string, string> idsToRemoveAreTheKeys) 

목록에서 제거하는 가장 좋은 방법은 무엇입니까?
감사합니다.

답변

4
list.RemoveAll(item => idsToRemoveAreTheKeys.ContainsKey(item.ID)); 

이 한번 목록의 각 항목을 확인하고, 사전에 키 조회를 수행하므로 키 조회가 빠르다 때문에 대략 O (N)에있다.

키를 반복하면 매번 목록을 통해 선형 검색을 수행해야하는데, O (N * M)가 필요합니다. 여기서 M은 사전의 키 수입니다.

0

목록은이 작업을 수행 할 수 있습니다

Dim sam As New List(Of Integer) From {1, 2, 3, 4, 5, 6, 7, 8, 9, 10} 
    sam.RemoveAll(Function(x) x Mod 2 = 0) 

    var sam = New List<int> {1, 2, 3, 4, 5, 6, 7, 8, 9, 10} 
    sam.RemoveAll(x => x % 2 = 0)