El método List<T>.Sort() se usa para ordenar los elementos o una parte de los elementos en List<T> usando la implementación de IComparer<T> predeterminada o especificada o un delegado de Comparison<T> provisto para comparar elementos de lista . Hay un total de 4 métodos en la lista de sobrecarga de este método de la siguiente manera:
- Ordenar (IComparer<T>)
- Ordenar (Int32, Int32, IComparer
) - Clasificar()
- Ordenar (Comparación <T>)
Aquí, discutiremos los dos primeros métodos.
Ordenar (IComparer<T>) Método
Este método se utiliza para ordenar los elementos de List<T> completo mediante el comparador especificado.
Sintaxis:
public void Sort (System.Collections.Generic.IComparer<T> comparer);
Aquí, el comparador es la implementación de IComparer<T> para usar al comparar elementos, o nulo para usar el comparador predeterminado Default.
Excepciones:
- InvalidOperationException: si el comparador es nulo y el comparador predeterminado Default no puede encontrar la implementación de la interfaz genérica IComparable<T> o la interfaz IComparable para el tipo T.
- ArgumentException: si la implementación del comparador provocó un error durante la ordenación. Por ejemplo, el comparador podría no devolver 0 al comparar un elemento consigo mismo.
Ejemplo 1:
// C# program to demonstrate the concept of // List<T>.Sort(IComparer <T>) method using System; using System.Collections.Generic; class GFG : IComparer<int> { public int Compare(int x, int y) { if (x == 0 || y == 0) { return 0; } // CompareTo() method return x.CompareTo(y); } } public class geek { // Main Method public static void Main() { // List initialize List<int> list1 = new List<int> { // list elements 1,5,6,2,4,3 }; Console.WriteLine("Original List"); foreach(int g in list1) { // Display Original List Console.WriteLine(g); } // "gg" is the object oif class GFG GFG gg = new GFG(); Console.WriteLine("\nSort with a comparer:"); // use of List<T>.Sort(IComparer<T>) // method. The comparer is "gg" list1.Sort(gg); foreach( int g in list1 ) { // Display sorted list Console.WriteLine(g); } } }
Original List 1 5 6 2 4 3 Sort with a comparer: 1 2 3 4 5 6
Ejemplo 2:
// C# program to demonstrate the concept of // List<T>.Sort(IComparer <T>) method using System; using System.Collections.Generic; class GFG : IComparer<string> { public int Compare(string x, string y) { if (x == null || y == null) { return 0; } // "CompareTo()" method return x.CompareTo(y); } } public class geek { // Main Method public static void Main() { List<string> list1 = new List<string>(); // list elements list1.Add("A"); list1.Add("I"); list1.Add("G"); list1.Add("B"); list1.Add("E"); list1.Add("H"); list1.Add("F"); list1.Add("C"); list1.Add("J"); Console.WriteLine("Original List"); // Display Original List Display(list1); // "gg" is the object GFG gg = new GFG(); Console.WriteLine("\nSort with a comparer:"); // sort the list with a // specified comparer "gg" list1.Sort(gg); // Display sorted List Display(list1); Console.WriteLine("\nBinarySearch and Insert D"); // Binary Search for "D" // using List.BinarySearch(T) method int index = list1.BinarySearch("D"); if (index < 0) { // range++; list1.Insert(~index, "D"); } // Display the List after // inserting "D" Display(list1); } // Display function public static void Display(List<string> list) { foreach( string g in list ) { Console.WriteLine(g); } } }
Original List A I G B E H F C J Sort with a comparer: A B C E F G H I J BinarySearch and Insert D A B C D E F G H I J
Método List<T>.Sort(Int32, Int32, IComparer<T>)
Este método se usa para ordenar los elementos en un rango de elementos en List<T> usando el comparador especificado.
Sintaxis:
public void Sort(int index, int len, IComparer<T> comparer)
Parámetros:
index : Es el índice de inicio basado en cero del rango en el que ocurrirá la ordenación.
len : Es la longitud del rango.
comparer : al comparar elementos, use la implementación de IComparer o null para usar el comparador predeterminado Default.
Excepciones:
- ArgumentOutOfRangeException : si index o len es menor que 0.
- ArgumentException : si el índice y el recuento no especifican un rango válido en la lista .
- InvalidOperationException : si el comparador es nulo.
Ejemplo:
// C# program to demonstrate the use of // List<T>.Sort(Int32, Int32, IComparer<T>) // Method using System; using System.Collections.Generic; class GFG : IComparer<string> { public int Compare(string x, string y) { if (x == null || y == null) { return 0; } // "CompareTo()" method return x.CompareTo(y); } } public class geek { public static void Main() { List<string> list1 = new List<string>(); // list elements list1.Add("C++"); list1.Add("Java"); list1.Add("C"); list1.Add("Python"); list1.Add("HTML"); list1.Add("CSS"); list1.Add("Scala"); list1.Add("Ruby"); list1.Add("Perl"); int range = 4; Console.WriteLine("Original List"); // Display Original List Display(list1); // "gg" is the object GFG gg = new GFG(); Console.WriteLine("\nSort a range with comparer:"); // sort the list within a // range of index 1 to 4 // where range = 4 list1.Sort(1, range, gg); // Display sorted List Display(list1); Console.WriteLine("\nBinarySearch and Insert Dart"); // Binary Search and storing // index value to "index" int index = list1.BinarySearch(0, range, "Dart", gg); if (index < 0) { list1.Insert(~index, "Dart"); range++; } // Display the List // after inserting "Dart" Display(list1); } // Display function public static void Display(List<string> list) { foreach(string g in list) { Console.WriteLine(g); } } }
Original List C++ Java C Python HTML CSS Scala Ruby Perl Sort a range with comparer: C++ C HTML Java Python CSS Scala Ruby Perl BinarySearch and Insert Dart C++ C Dart HTML Java Python CSS Scala Ruby Perl
Referencia:
Publicación traducida automáticamente
Artículo escrito por SoumikMondal y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA