Exportar (0) Imprimir
Expandir todo
Este artículo proviene de un motor de traducción automática. Mueva el puntero sobre las frases del artículo para ver el texto original. Más información.
Traducción
Original

ArrayList.Sort (Método) (IComparer)

Ordena los elementos en la ArrayList completa utilizando el comparador especificado.

Espacio de nombres:  System.Collections
Ensamblado:  mscorlib (en mscorlib.dll)

public virtual void Sort(
	IComparer comparer
)

Parámetros

comparer
Tipo: System.Collections.IComparer
Implementación de IComparer que se va a utilizar al comparar elementos.
O bien
Referencia nula (Nothing en Visual Basic) para usar la implementación de IComparable de cada elemento.

ExcepciónCondición
NotSupportedException

ArrayList es de solo lectura.

InvalidOperationException

Se produjo un error comparando dos elementos.

ArgumentException

null se pasa para comparer, y los elementos de la lista no implementan IComparable.

Utilice el método de Sort para ordenar una lista de objetos con un comparador personalizado que implemente la interfaz de IComparer . Si pasa null para comparer, este método utiliza la implementación de IComparable de cada elemento. En este caso, debe asegurarse de que los objetos incluidos en la lista implementan la interfaz de IComparer o se iniciará una excepción.

Además, mediante la implementación de IComparable significa que la lista realiza una ordenación de comparación (también denominada una ordenación inestable); es decir, si dos elementos son iguales, el orden no puede conservarse. En contraste, una ordenación estable conserva el orden de los elementos que son iguales. Para realizar una ordenación estable, debe implementar una interfaz IComparer personalizada.

Este método suele ser una operación O(n log n), donde n es Count; aunque en el peor de los casos es una operación O(n^ 2).

En el ejemplo de código siguiente se muestra cómo ordenar los valores de una ArrayList mediante el comparador predeterminado y un comparador personalizado que invierte el orden.


using System;
using System.Collections;

public class SamplesArrayList  {

   public class myReverserClass : IComparer  {

      // Calls CaseInsensitiveComparer.Compare with the parameters reversed.
      int IComparer.Compare( Object x, Object y )  {
          return( (new CaseInsensitiveComparer()).Compare( y, x ) );
      }

   }

   public static void Main()  {

      // Creates and initializes a new ArrayList.
      ArrayList myAL = new ArrayList();
      myAL.Add( "The" );
      myAL.Add( "quick" );
      myAL.Add( "brown" );
      myAL.Add( "fox" );
      myAL.Add( "jumps" );
      myAL.Add( "over" );
      myAL.Add( "the" );
      myAL.Add( "lazy" );
      myAL.Add( "dog" );

      // Displays the values of the ArrayList.
      Console.WriteLine( "The ArrayList initially contains the following values:" );
      PrintIndexAndValues( myAL );

      // Sorts the values of the ArrayList using the default comparer.
      myAL.Sort();
      Console.WriteLine( "After sorting with the default comparer:" );
      PrintIndexAndValues( myAL );

      // Sorts the values of the ArrayList using the reverse case-insensitive comparer.
      IComparer myComparer = new myReverserClass();
      myAL.Sort( myComparer );
      Console.WriteLine( "After sorting with the reverse case-insensitive comparer:" );
      PrintIndexAndValues( myAL );

   }

   public static void PrintIndexAndValues( IEnumerable myList )  {
      int i = 0;
      foreach ( Object obj in myList )
         Console.WriteLine( "\t[{0}]:\t{1}", i++, obj );
      Console.WriteLine();
   }

}


/* 
This code produces the following output.
The ArrayList initially contains the following values:
        [0]:    The
        [1]:    quick
        [2]:    brown
        [3]:    fox
        [4]:    jumps
        [5]:    over
        [6]:    the
        [7]:    lazy
        [8]:    dog

After sorting with the default comparer:
        [0]:    brown
        [1]:    dog
        [2]:    fox
        [3]:    jumps
        [4]:    lazy
        [5]:    over
        [6]:    quick
        [7]:    the
        [8]:    The

After sorting with the reverse case-insensitive comparer:
        [0]:    the
        [1]:    The
        [2]:    quick
        [3]:    over
        [4]:    lazy
        [5]:    jumps
        [6]:    fox
        [7]:    dog
        [8]:    brown 
*/



.NET Framework

Compatible con: 4.5.2, 4.5.1, 4.5, 4, 3.5, 3.0, 2.0, 1.1, 1.0

.NET Framework Client Profile

Compatible con: 4, 3.5 SP1

Windows Phone 8.1, Windows Phone 8, Windows 8.1, Windows Server 2012 R2, Windows 8, Windows Server 2012, Windows 7, Windows Vista SP2, Windows Server 2008 (no se admite el rol Server Core), Windows Server 2008 R2 (se admite el rol Server Core con SP1 o versiones posteriores; no se admite Itanium)

.NET Framework no admite todas las versiones de todas las plataformas. Para obtener una lista de las versiones compatibles, vea Requisitos de sistema de .NET Framework.

Adiciones de comunidad

AGREGAR
Mostrar:
© 2015 Microsoft