Download interface list de java

Document related concepts
no text concepts found
Transcript
FACULTAD DE INGENIERIA
ASIGNATURA: ESTRUCTURAS DE DATOS
TEMA: LA INTERFACE LIST DE JAVA
INTERFACE LIST
Java cuenta con la interface “list” del paquete java.util que facilita el trabajo con estructuras de
datos como arreglos, vectores y lista enlazadas.
Las estructuras de datos Vector, ArrayList, LinkedList implementan la interface List.
LINKEDLIST
•
•
•
•
La clase LinkedList implementa la interface List. Eso quiere decir que tendrá una serie de
métodos propios de esta interface y comunes a todas las implementaciones.
Se basa en la implementación de listas doblemente enlazadas.
ArrayList es más rápida para búsquedas que LinkedList.
Pero si lo que necesitamos es que la inserción o eliminación se hagan lo más rápidamente
posible, LinkedList resulta una implementación muy eficiente.
Veamos un ejemplo de implementación de la clase LinkedList.
public class ListaEnlazada {
public static void main(String[] args) {
LinkedList lista = new LinkedList();
lista.add(7);
lista.add(3);
lista.add(9);
lista.add(43);
lista.remove(0);
System.out.println("El tamaño de la lista es "+lista.size());
System.out.println("La lista completa "+lista);
System.out.println("el primer elemento "+lista.getFirst());
System.out.println("el último elemento "+lista.getLast());
System.out.println("La lista completa por elemento");
int x=0;
for(x=0;x<=(lista.size()-1);x++){
System.out.println(lista.get(x));
}
}
}
La salida de éste programa es la siguiente:
INVESTIGUE:
Que otros métodos se pueden implementar con la clase LINKEDLIST y explíquelos con un ejemplo.
LINKEDLIST VS ARRAYLIST
Comparemos y analicemos las diferencias entre linkedlist y arraylist
public class Persona{
public int idPersona;
public String nombre;
public int altura;
public Persona(int idPersona, String nombre, int altura) {
this.idPersona = idPersona;
this.nombre = nombre;
this.altura = altura;}
public String toString() {
return "Persona-> ID: "+idPersona+" Nombre: "+nombre+" Altura: "+altura+"\n";
}
}
import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;
public class Programa {
public static void main(String arg[]) {
List<Persona> listaarray = new ArrayList<Persona>();
List<Persona> listalinked = new LinkedList<Persona>();
long antes;
for(int i=0;i<10000;i++)
{
listaarray.add(new Persona(i,"Persona"+i,i)); // En este ejemplo cada persona lleva datos ficticios
listalinked.add(new Persona(i,"Persona"+i,i));
}
System.out.println("Tiempo invertido en insertar una persona en listaarray (en nanosegundos):");
antes = System.nanoTime();
listaarray.add(0,new Persona(10001,"Prueba",10001)); // Inserción en posicion 0 de una persona
System.out.println(System.nanoTime()- antes);
System.out.println("Tiempo invertido en insertar una persona en listalinked (en nanosegundos):");
antes = System.nanoTime();
listalinked.add(0,new Persona(10001,"Prueba",10001)); // Inserción en posicion 0 de una persona
System.out.println(System.nanoTime()- antes);
}
}
CLASE STACK
Java también cuenta con la clase “Stack” para la creación de estructuras de datos PILA, que es una
clase de la librería java.util.
Analicemos el comportamiento de la clase Stack con un ejemplo. Este ejemplo apila los números
del 1 al 10 y los des-apila luego.
import java.util.Stack;
public class Pila {
public static void main(String[] args) {
Stack<String> pila = new Stack<String>();
for (int x=1;x<=10;x++)
pila.push(Integer.toString(x));
while (!pila.empty())
System.out.println(pila.pop());
}
}
•
•
•
Push es el método para apilar elementos
Pop es el método para des-apilar elementos
Empty es el método para ver si la pila está vacia.
INVESTIGUE:
Que otros métodos se pueden implementar con la clase STACK y explíquelos con un ejemplo.
COLAS
La estructura de dato cola se implementa con la interfaz Queue que es una clase de la librería
java.util (java.util.Queue).
Analizar!
LinkedList implementa la interfaz “Queue” entonces puede crear una cola con el uso de LinkedList.