J'ai une ArrayList où je stocke 10 objets avec deux nombres générés au hasard chacun et je veux trier la liste par les valeurs Y des objets.Trier ArrayList avec des objets bidimensionnels
Random rndm = new Random();
ArrayList CustomList = new ArrayList();
for (int i = 0; i < 10; i++)
{
Point LP = new Point(rndm.Next(50), rndm.Next(50));
CustomList.Add(LP);
}
PrintList(CustomList);
CustomList.Sort();
PrintList(CustomList);
La méthode Sort
génère l'exception suivante:
System.InvalidOperationException: The comparer threw an exception. ---> System.ArgumentException: At least one object must implement IComparable.
Je suppose que cela ne fonctionne pas parce que la méthode de tri ne peut pas gérer deux objets tridimensionnels dans les ArrayLists. Comment puis-je faire fonctionner la méthode Sort maintenant?
Pourquoi ne pas utiliser 'List' au lieu de 'ArrayList'? –
juharr
Comment vous attendiez-vous à ce que la méthode Sort sache que vous vouliez trier par Y et non par X? Utilisez 'List' et 'list = list.OrderBy (t => t.Y) .ToList();'. Vous ne devriez plus utiliser ArrayList, maintenant qu'il existe de belles collections génériques comme 'List '. –
Blorgbeard