miércoles, 29 de abril de 2009

Clases De Listas

LinkedList:
Es una lista enlazada de Recipientes (nodos) donde cada uno contiene elementos (objetos, otras listas, etc) y uno o dos punteros hacia posiciones de memoria que apuntan al anterior o siguiente nodo.
Útil cuando se quiere insertar o eliminar elementos al principio o al final de la lista. No permite acceder a un elemento en concreto de la lista directamente sin recorrer antes los anteriores.

ArrayList:
Es una estructura de datos de tipo Array dinámica. A diferencia de los arrays clásicos (arrays estáticos), un ArrayList permite aumentar el tamaño del vector indefinidamente (hasta lo que la memoria permita) y agregar o quitar elementos.
A diferencia de la LinkedList, la ArrayList permite acceder a cualquier elemento de la lista directamente mediante su índice, lo que la hace especialmente adecuada para búsquedas rápidas.

HashSet:
Un HashSet es una estructura de datos que contiene un conjunto de objetos. Permite buscar un objeto dentro del conjunto de forma rápida y fácil. Internamente gestiona un array y guarda los objetos utilizando un índice calculado con un código hash del objeto.
- Los elementos de un HashSet no están ordenados
- Para añadir un elemento al HashSet se utiliza el método add(Object obj).
- Para borrar un elemento se utiliza remove(Object obj).
- Para borrar todos los elementos se utiliza clear().
- El tamaño del HashSet se puede obtener con la función size()

HashMap:
Un HashMap permite guardar elementos, donde cada elemento es un par clave/valor. A diferencia de un array simple donde se guarda el valor en un índice en concreto, un HashMap determina el índice él mismo basándose en el valor hash (hashcode) generado a partir de la clave.

TreeSet:
Un TreeSet mantiene los objetos ordenados en lo que se conoce como un red-black tree, es decir, en un árbol binario balanceado (cada padre tiene como máximo 2 hijos, y cuando se inserta una entrada se autobalancea de forma que quede un árbol binario simétrico).
Un TreeSet permite hacer búsquedas rápidas. No tanto como un HashMap, pero el TreeSet tiene la ventaja de estar ordenado por clave.

Ejemplo:

public class NodoLista4{
String nom;
int calif1;
int calif2;
int calif3;
}
import java.util.*;
public class ListaAlumnos{

static double prom;
public static void main( String args[] ){
Scanner leer = new Scanner(System.in);

NodoLista4 nodo = new NodoLista4();
int op;

ArrayList lista = new ArrayList();
do{
System.out.println( "Ingrese el nombre del alumno:" );
nodo.nom = leer.next();
System.out.println( "Ingrese la primera calificación:" );
nodo.calif1 = leer.nextInt();
System.out.println( "Ingrese la segunda calificación:" );
nodo.calif2 = leer.nextInt();
System.out.println( "Ingrese la tercera calificación:" );
nodo.calif3 = leer.nextInt();

lista.add("Nombre del alumno:\n"+nodo.nom);
lista.add("Calificación 1:\n"+nodo.calif1);
lista.add("Calificación 2:\n"+nodo.calif2);
lista.add("Calificación 3\n"+nodo.calif3);

promedio(nodo.calif1, nodo.calif2, nodo.calif3);

lista.add("Su promedio es:\n"+prom);

System.out.println( "¿Desea ingresar otro alumno?" );
System.out.println( "1.-Si\t 2.-No" );
op = leer.nextInt();
}
while(op != 2);
List lista2 = new ArrayList(lista);
Iterator it = lista2.iterator();
while (it.hasNext()){
System.out.println(it.next()+"");
}
}

private static double promedio(int calif1, int calif2, int calif3){
int suma = calif1 + calif2 + calif3;
prom = suma/3;
return prom;
}
}

1 comentario: