mamyC# szybciej niż SortedList sortowanie <>
SortedList<Resource, Resource> resources =
new SortedList<Resource, Resource>(new ResourceIdle());
że używamy w naszej symulacji. Ta lista zasobów jest inicjowana w ten sposób, ponieważ chcemy w dowolnym momencie przekazać różne porównywarki. Pierwszy problem polega na tym, że SortedList<>
wymaga dodatkowego porównania w porównywarce, dzięki czemu możemy dodać różne instancje Resource
o tych samych właściwościach. Na przykład, jeśli porównywarka wygląda następująco:
public int Compare(Resource x, Resource y)
{
int priority1 = x.Priority;
int priority2 = y.Priority;
if (priority1 > priority2) {
return -1;
} else if (priority1 < priority2) {
return 1;
} else {
return (x.Id.CompareTo(y.Id));
}
}
wtedy musimy dokonać dodatkowego porównania gdy priorytety są takie same, w przeciwnym razie możemy wrócić wyjątek dla wpisu z tym samym kluczem. Moje pytanie brzmi, czy istnieje inny sposób osiągnięcia tego? A jako drugorzędne pytanie, czy istnieje coś szybszego niż SortedList<>
do zamawiania dużej liczby obiektów?
Jak wiele różnych priorytetów istnieją? –
Liczba priorytetów jest zdefiniowana przez użytkownika. Może być 3 lub może 10. To naprawdę zależy od modelu. – Dimitris