DA1 02 Colecciones

Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 53

Desarrollo de Aplicaciones I

Estructura de Datos y
Colecciones en C#
Mgter.. José Sulla
Mgter
Agenda

Introducción
Colección
A
Array
rray
ArrayList
Stack
HashTable
Resumen
Introducción

Una estructura de datos es una forma de


organizar un conjunto de datos elementales
con el objetivo de facilitar su manipulación.
Un dato elemental es la mínima información
que se tiene en un sistema.
q
Visual Studio .Net proporciona un conjunto
de colecciones que define la organización e
interrelación de éstos y un conjunto de
operaciones sobre ellos.
Colecciones

.NET Framework contiene clases de


estructura de datos pre-empaquetados
A estas clases se conocen como colección
de clases.
Con la colección de clases, en lugar de crear
estructuras ded d
datos, ell programador
d
simplemente usa estructuras de datos
existentes sin preocuparse por cómo la
existentes,
estructura de datos esta implementada.
Esta metodología es un maravilloso ejemplo
de reuso de código.
Colecciones

Algunas de las colecciones de clases mas


importantes son Array, Array-List, Stack y
Hashtable todas ellas pertenecen al
namespace System.Collections.
Colecciones

El namespace System.Collections define


interfaces que especifican el
comportamiento de la mayoría de
colecciones en el framework .NET. Las
interfaces se organizan en tres grupos:
Interfaces de Colección
Interfaces de Comparación
Interfaces de Enumeración
IEnumerator
IDictionaryEnumerator
Clase Array

Todos los arrays heredan de la clase Array


(namespace System) la cual define una
propiedad Length (tamaño) que especifica el
numero de elementos en un array.
La clase Arrayy p proporciona
p métodos q que
proveen de algoritmos para procesamiento
de arrays. Por ejemplo, Reverse, Sort, Copy
Clase Array
Clase Array
Clase Array
Clase Array
Clase ArrayList

La colección de la clase ArrayList imita la


funcionalidad de un array convencional y
proporciona redimensionamiento dinámico
del tamaño.
En cualquier
q momento un ArrayList
y contiene
un cierto numero de elementos menor que o
igual a su capacidad.
Clase ArrayList
Clase ArrayList : Agregar
Clase ArrayList : Eliminar
Clase ArrayList : Primero
Clase ArrayList : Ultimo
Clase ArrayList : ¿Esta vacío?
Clase ArrayList : Buscar y Posición
Clase ArrayList : Ajustar y Estadística
Clase ArrayList : Mostrar
Clase Stack

La clase Stack,, implementa


p una estructura de
datos Pila.
La clase Stack tiene métodos Push y Pop para
ejecutar las operaciones básicas de la Pila.
El método Push toma un objeto como argumento y
l coloca
lo l en la
l cima
i d la
de l pila.
il
El método Pop no toma argumentos, remueve y
retorna el objeto que actualmente esta en la cima
de la pila.
Clase Stack
Clase Stack : Poner
Clase Stack : Sacar
Clase Stack : Mirar
Clase Stack : ¿Esta Vacío? - Buscar
Clase Stack : Mostrar
Clase HashTable

La gestión de objetos, como clasificación y


recuperación, son eficiente si algún aspecto
de los datos coinciden directamente con una
clave generada.
De este modo podemos
p acceder
rápidamente al elemento que queremos
gestionar.
Esta solución es manejada en el Framework
.NET con la clase Hashtable.
Clase HashTable
Clase HashTable : Poner
Clase HashTable : Obtiene
Clase HashTable : Elimina – Esta vacía?
Clase HashTable : Buscar - limpiar
Clase HashTable : listar los objetos
Clase HashTable : listar las claves
Colecciones Genéricas
Permite almacenar un tipo específico de objetos
que es definido al momento de crear la colección
Las colecciones genéricas están definidas en el
namespace
p System.Collections.Generic;
System.Collections.Generic
y ;
La clase List es el equivalente genérico al
ArrayList.. La diferencia esta que al momento de
ArrayList
crear una colección List debemos indicar el tipo
de objetos que va almacenar.
La
L clase
l genérica
g é i LinkedList
Li k dLi t representa
t una lista
li t
doblemente enlazada de objetos.
Tipos Genéricos
Los tipos genéricos hacen posible el diseño de
clases estructuras
clases, estructuras, interfaces y métodos que
difieren la especificación de uno o mas tipos
hasta que el cliente declara e instancia la clase o
método.
é d
La sintaxis es:
ClassName<T>
ClassName <T>

List<int>
List< int> listaNum = new List<
List<int>();
int>();
List<
List <string
string>> listaNum = new List<
List<string>();
string>();
Tipos Genéricos: List
using System.Collections.Generic
System.Collections.Generic;;

//Crea una lista vacía
List<
List <DateTime
DateTime>> aLista = new List<
List<DateTime >();
();
DateTime>();
//Agrega elementos
aLista.Add(new
aLista.Add (new DateTime
DateTime(1984,4,5));
(1984,4,5));
aLista.AddRange(new
aLista.AddRange (new DateTime[]
DateTime[] {
new DateTime
DateTime(1980,1,19),
(1980,1,19),
new DateTime
DateTime(1982,12,3)});
(1982,12,3)});
1982 12 3

//Recupera los dos primeros elementos


List<
List <DateTime
DateTime>
> priDos = aLista.GetRange
aLista.GetRange(0,2);
(0,2);
Tipos Genéricos: List
//Remueve los elementos 2 y 3
aLista RemoveRange(2
aLista.RemoveRange(2,2);
aLista.RemoveRange (2,2);
2);
//Ordena la Lista y busca un elemento
aLista.Sort();();
int index = aLista.BinarySearch
aLista.BinarySearch(new (new DateTime(
DateTime(1982,12,3))
1982,12,3)) ;
Console.WriteLine
Console .WriteLine(“Índice
(“Índice del elemento ‘12/03/1982’ es
{0}.”, index);
index);
//Itera a través de todos los elementos
foreach(DateTime dt in aLista
foreach( aLista))
{
Console
Console.WriteLine
Console.WriteLine(
WriteLine(“{0}”
((“{0}”
{0} , dt.ToShortDateString
dt ToShortDateString());
dt.ToShortDateString());
}
Tipos Genéricos: Stack
using System.Collections.Generic
System.Collections.Generic;;

//Crea una pila de objetos DateTime
Stack<
Stack <DateTime
DateTime> > aPila = new Stack<
Stack<DateTime >();
();
DateTime>();
aPila.Push(new
aPila.Push (new DateTime(1984,4,5));
DateTime(1984,4,5));
aPila.Push(new
aPila.Push (new DateTime(1980,1,19));
DateTime(1980,1,19));
aPila.Push(new
aPila.Push (new DateTime(1985,12,3));
DateTime(1985,12,3));

//Mirada el elemento 3 pero no lo remueve


DateTime item = aPila.Peek
aPila.Peek();
();
Tipos Genéricos: Stack
//Itera a través de la pila usando foreach
foreach(DateTime dt in aPila)
{
((“{0}”,
{ } , dt.ToShortdateString
Console.WriteLine(“{0}”, dt.ToShortdateString());
g());
}
//Itera a través de la pila usando Stack.Enumerator
Stack<
Stack <DateTime
DateTime>.>.Enumerator
Enumerator enum = aPila.GetEnumerator
aPila.GetEnumerator();
();
while((enum.MoveNext())
while enum.MoveNext())
{
DateTime dt = enum.Current
enum.Current;;
Console
Console.WriteLine
Console.WriteLine(
WriteLine(“{0}”
((“{0}”
{0} , dt.ToShortDateString
dt ToShortDateString());
dt.ToShortDateString());
}
Clase StringBuilder
La clase StringBuilder es una clase que se usa
para crear y manipular dinámicamente
información string.
Los objetos de la clase String son constantes
strings, mientras que los objetos de la clase
StringBuilder son strings dinámicos.
Cada StringBuilder puede almacenar un cierto
numero de caracteres que están especificados
por su capacidad.
Cuando se excede esta capacidad
automáticamente se expande para ajustarse a
los caracteres adicionales.
adicionales
Métodos Append y AppendFormat
StringBuilder
Append, permite que diferentes tipos de
valores se agreguen al final de un
StringBuilder.
Append se comporta similar al operador +
que se usa en strings.
AppendFormat, convierte un string a un
formato especifico y luego lo a
StringBuilder.
StringBuilder
Métodos Append StringBuilder
Métodos Append StringBuilder
Métodos AppendFormat StringBuilder
Métodos AppendFormat StringBuilder
Métodos Insert, Remove y Replace
StringBuilder
Insert, permite que varios valores se
puedan insertar en cualquier posición en un
StringBuilder.
Remove, elimina cualquier porción de un
StringBuilder
Replace, busca un string o caracter y lo
substituye por otro string o character en
ese lugar.
lugar
Métodos Replace StringBuilder
Métodos Insert, Remove y Replace
StringBuilder
Resumen

.NET Framework contiene colección de clases que


q
permite usar estructuras de datos existentes
permitiendo el reuso de código.
Todos los arrays heredan de la clase Array
(namespace System), La colección de la clase
ArrayList es similar a un array convencional
proporcionando redimensionamiento dinámico.
La clase Stack,, implementa
p una estructura de
datos Pila.
La clase Hashtable permite generar una clave con
lo que se puede acceder de una forma directa a los
datos.
Preguntas

¿Qué son las colecciones?


¿Cuáles con las ventajas de trabajar con las
Colecciones de FLC?
¿Cuál es la diferencia con las Colecciones
genéricas?
¿Qué es hashing?

También podría gustarte