Lista list

0

Witam

Mam pytanie czy jest możliwość zrobienie w C# Listy list. Chodzi mi dokładnie o zrobienie czegoś takiego:

List<Krawedz> lista_krawedzi = new List<Krawedz>();
a później listy tej listy:
// List<lista_krawedzi> lista_list = new List<lista_krawedzi>(); Niestety to nie działa, ma ktoś jakiś pomysl jak to można byłoby rozwiązać??

Z góry dziękuję i pozdrawiam:)

0

I jeszcze jedno pytanie, jak posortować liste krawędzi za pomocą funkcji Sort.
Krawędź zawiera 3 atrybuty: Point początek, Point koniec oraz int waga.

Chciałbym posortować liste aby elementy listy były posortowane wedlug wag niemalejąco.

0

List<List<Krawedz>> lista_krawedzi = new List<List<Krawedz>>();

A na sortowanie odpowiem jak będę miał dostęp do Visual Studio, bo tych predykatów (tak to się tłumaczy ;)?) nie pamiętam dokładnie.

0
malak napisał(a)

I jeszcze jedno pytanie, jak posortować liste krawędzi za pomocą funkcji Sort.
Krawędź zawiera 3 atrybuty: Point początek, Point koniec oraz int waga.

Chciałbym posortować liste aby elementy listy były posortowane wedlug wag niemalejąco.

Moja propozycja jest taka:

  1. Robisz sobie klasę porównującą dziedziczącą po IComparer<T>;
  2. Sortujesz listę wołając na niej metodę Sort() z obiektem klasy porównującej jako parametrem.

W kodzie to jakoś mniej więcej tak:

internal class WagaKrawedziComparer : IComparer<krawedz> //bardzo brzydka nazwa klasy { public int Compare(Krawedz x, Krawedz y) { return y.Waga - x.Waga; //odwrotnie, bo ma być rosnąco } } //...jakiś kod List<krawedz> lk = new List<krawedz>(); //...jakiś kod - pewno uzupełnienie listy danymi lk.Sort(new WagaKrawedziComparer()); //sortowanie ```
0
lista.Sort(delegate(Krawedz a, Krawedz b) { return a.waga - b.waga; }); ``` A moja taka ;).

(to predykaty do wyszukiwania były)

0

Można jeszcze ciut prościej ;)

lista.Sort((a, b) => a.waga - b.waga);

1 użytkowników online, w tym zalogowanych: 0, gości: 1