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.