Las “listas” (arraylist)

ArrayList

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Collections;

namespace EjemploArrayList
{
    class Program
    {
        static void Main(string[] args)
        {
            ArrayList miArrayList = new ArrayList();
            miArrayList.Add("Hola ");
            miArrayList.Add("buenos ");
            miArrayList.Add("días.");

            foreach (string cadena in miArrayList)
                Console.WriteLine(cadena);

            // Accedemos a una posición 
            Console.WriteLine("La segunda cadena es: {0}", miArrayList[1]);

            // Insertamos en la segunda posicion 
            miArrayList.Insert(1, "¿Cómo estás?, "); 

            // Mostramos de otra forma lo que contiene 
            for (int i=0; i<miArrayList.Count; i++)
                Console.WriteLine(miArrayList[i]);

            // Buscamos un elemento 
            Console.WriteLine("La palabra \"días.\" está en la posición {0}",
            miArrayList.IndexOf("días."));

            // Ordenamos 
            miArrayList.Sort();

            // Mostramos lo que contiene 
            Console.WriteLine("Contenido tras ordenar");
            foreach (string frase in miArrayList)
                Console.WriteLine(frase);

            // Buscamos con búsqueda binaria 
            Console.WriteLine("Ahora \"días.\" está en la posición {0}",
            miArrayList.BinarySearch("días."));

            // Invertimos la lista 
            miArrayList.Reverse();

            // Borramos el segundo dato y la palabra "días." 
            miArrayList.RemoveAt(1);
            miArrayList.Remove("días.");

            // Mostramos nuevamente lo que contiene 
            Console.WriteLine("Contenido dar la vuelta y tras eliminar dos:");
            foreach (string frase in miArrayList)
                Console.WriteLine(frase);

            // Ordenamos y vemos dónde iría un nuevo dato 
            miArrayList.Sort();
            Console.WriteLine("La frase \"Hola \"...");
            int posicion = miArrayList.BinarySearch("Hola ");
            if (posicion >= 0)
                Console.WriteLine("Está en la posición {0}", posicion);
            else
                Console.WriteLine("No está. El dato inmediatamente mayor es el {0}: {1}",
                ~posicion, miArrayList[~posicion]); 

            Console.ReadKey();
        }
    }
}

El símbolo ~. BinarySearch devuelve un número negativo cuando el texto que buscamos no aparece, pero ese número negativo tiene un significado: es el “valor complementario” de la posición del dato inmediatamente mayor (es decir, el dato cambiando los bits 0 por 1 y viceversa).

 

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Collections;

namespace EjemploArrayList
{
    class Program
    {
        static void Main(string[] args)
        {
            ArrayList miArrayList = new ArrayList();
            miArrayList.Add("Primero ");
            miArrayList.Add("Segundo ");
            miArrayList.Add("Tercero ");
            miArrayList.Add("Cuarto ");
            miArrayList.Add("Quinto ");

            foreach (string cadena in miArrayList)
                Console.Write(cadena);

            Console.WriteLine();

            // Accedemos a una posición 
            Console.WriteLine("La segunda cadena es: {0}", miArrayList[1]);

            // Insertamos en la segunda posicion
            miArrayList.Insert(1, "Después de Primero ");
            miArrayList.Insert(0, "Al principio ");

            // Mostramos de otra forma lo que contiene 
            for (int i = 0; i < miArrayList.Count; i++)
                Console.WriteLine(miArrayList[i]);

            // Buscamos un elemento 
            Console.WriteLine("La palabra \"Tercero \" está en la posición {0}",
            miArrayList.IndexOf("Tercero "));

            // Ordenamos 
            miArrayList.Sort();

            // Mostramos lo que contiene 
            Console.WriteLine("Contenido tras ordenar");
            foreach (string frase in miArrayList)
                Console.WriteLine(frase);

            // Buscamos con búsqueda binaria 
            Console.WriteLine("Ahora \"Cuarto \" está en la posición {0}",
            miArrayList.BinarySearch("Cuarto "));

            // Invertimos la lista 
            miArrayList.Reverse();

            // Borramos el segundo dato y la palabra "Quinto " 
            miArrayList.RemoveAt(1);
            miArrayList.Remove("Quinto ");

            // Mostramos nuevamente lo que contiene 
            Console.WriteLine("Contenido dar la vuelta y tras eliminar dos:");
            foreach (string frase in miArrayList)
                Console.WriteLine(frase);

            // Ordenamos y vemos dónde iría un nuevo dato 
            miArrayList.Sort();
            Console.WriteLine("La frase \"Primero \"...");
            int posicion = miArrayList.BinarySearch("Primero ");
            if (posicion >= 0)
                Console.WriteLine("Está en la posición {0}", posicion);
            else
                Console.WriteLine("No está. El dato inmediatamente mayor es el {0}: {1}",
                ~posicion, miArrayList[~posicion]);

            Console.WriteLine("La frase \"Sexto \"...");
            posicion = miArrayList.BinarySearch("Sexto ");
            if (posicion >= 0)
                Console.WriteLine("Está en la posición {0}", posicion);
            else
                Console.WriteLine("No está. El dato inmediatamente mayor es el {0}: {1}",
                ~posicion, miArrayList[~posicion]);

            Console.ReadKey();
        }
    }
}