SlideShare una empresa de Scribd logo
1 de 15
Descargar para leer sin conexión
Fundamentos de Informática (UNED – Grados Ingeniería) 
ArrayList en Java2 usando BlueJ 
Ejemplo: 
Se puede observar en la lista: 
• se llama ElementData. 
• incluye, en este caso, tres 
elementos “examen”, “cumple 
Neleta” y “recoger a los 
monstruitos”. 
• La longitud indicada en length 
=10 no nos tiene que preocupar 
porque podrá crecer 
automáticamente cuando se 
necesite. 
Definición: 
La clase ArrayList facilita la creación y manipulación listas. Se encuentra en el paquete 
java.util.ArrayList que deberemos importar antes de usar: 
Tutor: Antonio Peris (Dénia)
Fundamentos de Informática (UNED – Grados Ingeniería) 
La clase ArrayList es útil cuando implementamos un programa que agrupa datos de un 
mismo tipo y no sabemos cuántos valores se agruparán. Una lista ofrece dos 
ventajas significativas: 
• puede crecer o disminuir cuanto sea necesario. 
• ofrece métodos genéricos para las operaciones comunes, tal como insertar, 
eliminar, ver elementos y otros más... (buscar en google con estos parámetros: 
arraylist java site:oracle.com) 
Declaración de una Lista: 
Se escribe el tipo de los elementos dentro de < > y el nombre de la propia lista. De la 
siguiente forma: 
private ArrayList <String> notas; 
En este caso, String es el tipo de dato que se guardará dentro de la lista y notes es el 
nombre asignado a esta agrupación. 
La única restricción es que NO podemos utilizar tipos primitivos: int, float, char, 
double,... Para superar el problema se emplea el autoboxing. 
= 
import java.util.ArrayList; 
public class LibretaAnotaciones 
{ 
private ArrayList<String> notas; 
public LibretaAnotaciones() 
{ 
notas = new ArrayList<String>(); 
} 
} 
Ya tenemos hecha la libreta de anotaciones. Ahora, habrá que gestionar las anotaciones 
con algunos métodos genéricos que nos ofrece la clase ArrayList. 
Tutor: Antonio Peris (Dénia)
Fundamentos de Informática (UNED – Grados Ingeniería) 
Métodos más utilizados con un objeto ArrayList : 
add: añade un elemento 
Existen dos formas: 
• Añadir al final de la lista, método: public boolean add(E e). Ejemplo: 
public void guardaNota(String nota) 
{ 
notas.add(nota); 
} 
Antes Después de notas.add(“recoger 
monstruitos”); 
• Añadir en un lugar concreto y resto de elementos posteriores incluidos en la lista 
pasarán a la siguientes posiciones consecutivas. Método: public void add(int 
index,E element). El parámetro index será la posición de la lista a añadir el valor el 
elemento indicado por element. Ejemplo: 
public void guardaNota(int posicion, String nota) 
{ notas.add(posicion,nota); } 
Antes Después de notas.add( 1 ,"cumple Neleta"); 
Tutor: Antonio Peris (Dénia)
Fundamentos de Informática (UNED – Grados Ingeniería) 
get: retorna un elemento. 
El método public E get(int index). El parámetro index será la posición del elemento 
solicitado de la lista. Ejemplo: 
public String leeNota(int numNota) 
{ 
return notas.get(numNota); 
} 
} 
Lista Retorno de notas.leeNota (1); 
remove: elimina un elemento 
El método public E remove(int index). El parámetro index será la posición del elemento a 
borrar de la lista. El resto de elementos siguientes avanzarán una posición de la lista, 
evitando que hayan huecos en ella. Ejemplo: 
public void borraNota(int numNota) 
{ 
notas.remove(numNota); 
} 
Antes Después de notas.remove( 1 ); 
Tutor: Antonio Peris (Dénia)
Fundamentos de Informática (UNED – Grados Ingeniería) 
set: cambia un elemento 
El método public E set(int index, E element). El parámetro index será la posición del 
elemento a cambiar, el valor nuevo será indicado en el parámetro element. Ejemplo: 
public void modificaNota(int numNota, String nuevoValor) 
{ 
notas.set(numNota,nuevoValor); 
} 
Antes Después de notas.modificaNota(2,”recoger a los 
niños” ); 
size: longitud del arrayList 
El método public int size(). Se utiliza para saber el tamaño de la lista. Ejemplo: 
public int numeroDeNotas() 
{ 
return notas.size(); 
} 
Lista Retorno de notas.numeroDeNotas(); 
Tutor: Antonio Peris (Dénia)
Fundamentos de Informática (UNED – Grados Ingeniería) 
Recorrer una lista 
Existen dos formas: 
Toda la lista: 
Mediante un bucle que recorra todo el ArrayList: empieza por el elemento 0 y acaba 
en el último elemento. Si está vacía no imprime nada. 
for ( TipoDeObjetoDelArray nombreVariable ParaElBucle : nombreDelArrayList ) 
{ ... 
sentencias a ejecutar 
... 
} 
Ejemplo: 
public void imprimeNotas() 
{ 
for (String notaLocal : notas){ 
System.out.println(notaLocal); 
} 
} 
Lista Impresión por el terminal 
Tutor: Antonio Peris (Dénia)
Fundamentos de Informática (UNED – Grados Ingeniería) 
Hasta que se encuentre el elemento buscado: 
El Iterador o repetidor es un objeto del mismo tipo que el contenido del ArrayList 
que se utiliza acceder secuencialmente a los elementos del ArrayList, 
Iterator<String> iterador = notas.iterator(); 
Iterator <TipoDeObjetoDelArray> nombreDelIterador = nombreDelArrayList.iterator(); 
Se requiere importar el iterador que nos servirá para movernos por la lista: 
import java.util.Iterator; 
Métodos del Iterador: 
• hasNext() : devuelve true si la iteración tiene más elementos. 
Según la figura superior, sería e l bastón . 
• next() : devuelve el objeto en curso y, luego, automáticamente 
va al siguiente elemento de la iteración. Según la figura 
superior, sería la acción de subir y el valor del escalón . 
Tutor: Antonio Peris (Dénia)
Fundamentos de Informática (UNED – Grados Ingeniería) 
public void subeEscalera(){ 
ArrayList <String> escalera; 
escalera = new ArrayList<String>(); 
escalera.add("escalon1"); escalera.add("escalon2"); escalera.add("escalon3"); 
Iterator<String> iterador = escalera.iterator(); 
System.out.println("¿Hay más escalones? "+ iterador.hasNext()); 
while (iterador .hasNext() ) { 
System.out.println("subo "+ iterador .next() + "n"); 
System.out.println("¿Hay más escalones? "+ iterador.hasNext()); 
} 
} 
Con lo visto hasta ahora, este mecanismo es similar al for visto anteriormente. Esto 
es, recorrerá todo el ArrayList. Vamos a establecer las condiciones adicionales 
de finalización del recorrido: 
▪ Llegue al final de la lista sin encontrar el elemento (similar al for). Ejemplo 
anterior. 
▪ Encuentra el elemento: se le añade una nueva condición (en el ejemplo 
siguiente, encuentra “escalon2”) 
public void subeEscaleraEscalon2(){ 
ArrayList <String> escalera; 
escalera = new ArrayList<String>(); 
escalera.add("escalon1"); escalera.add("escalon2"); escalera.add("escalon3"); 
Iterator<String> iterador = escalera.iterator(); 
boolean encontrado=false; 
String it; // variable para utilizar el iterador sin incrementarlo 
System.out.println("¿Hay más escalones? "+ iterador.hasNext()); 
while (iterador.hasNext() && !encontrado){ 
it=iterador.next(); // incrementa el iterador y almacena en i t 
System.out.println("subo "+ it + "n"); 
if (it.contains("escalon2")){ 
encontrado=true; 
System.out.println("Encontrado elemento: no continúa"); 
} 
System.out.println("¿Hay más escalones? "+ iterador.hasNext()); 
} 
} 
Tutor: Antonio Peris (Dénia)
Fundamentos de Informática (UNED – Grados Ingeniería) 
Resultado por terminal del método anterior subeEscaleraEscalon2(): 
Ejemplo de la iteración paso a paso sin bucles: 
public void iterandoPasoApaso(){ 
Iterator<String> iterador = notas.iterator(); 
//siguiente elemento 
System.out.println("tttraza elemento iterador.hasNext() "+ iterador.hasNext()); 
// traza por el elemento que accede y, luego, va al siguiente 
System.out.println("ttraza elemento iterador.next() "+ iterador.next()); 
System.out.println("n"); 
//siguiente elemento 
System.out.println("tttraza elemento iterador.hasNext() "+ iterador.hasNext()); 
// traza por el elemento que accede y, luego, va al siguiente 
System.out.println("ttraza elemento iterador.next() "+ iterador.next()); 
System.out.println("n"); 
//siguiente elemento 
System.out.println("tttraza elemento iterador.hasNext() "+ iterador.hasNext()); 
// traza por el elemento que accede y, luego, va al siguiente 
System.out.println("ttraza elemento iterador.next() "+ iterador.next()); 
System.out.println("n"); 
// si se añadiese un elemento más, como no existe, daría un error/excepción 
} 
Tutor: Antonio Peris (Dénia)
Fundamentos de Informática (UNED – Grados Ingeniería) 
De una manera genérica: 
// inicialización del iterador o repetidor 
Iterator <TipoDeObjetoDelArray> nombreVariableParaElBucle = 
nombreDelArrayList.iterator(); 
// iniciado de las varibles u objetos temporales para uso dentro del bucle 
boolean encontrado=false; 
TipoDeObjetoDelArray it; 
// bucle que recorrerá el ArrayList mientras se cumplan las dos condiciones 
while (nombreVariableParaElBucle.hasNext() && !encontrado) { 
it = nombreVariableParaElBucle.next() 
¿ it es el elemento buscado? 
….... 
.. . … 
} 
Ejemplo con la libreta de anotaciones: 
public void buscaNota(String patronBusqueda) { 
// recuerda que hay que importar el Iterador 
// inicialización 
Iterator<String> iterador = notas.iterator(); 
boolean encontrado=false; 
String it; 
//bucle de búsqueda. Comprueba: 
// - Quedan más elementos en la lista 
// - No lo ha encontrado 
while (iterador.hasNext() && !encontrado) { 
it=iterador.next(); 
// traza por el elemento que accede 
System.out.println(“traza elemento”+ it); 
// comprueba si el elemento de la lista contiene 
// el patrón de búsqueda 
if (it.contains(patronBusqueda)){ 
System.out.println("encontrado: " + it); 
encontrado= true; 
} 
} 
System.out.println("Fin de búsqueda"); 
} 
Tutor: Antonio Peris (Dénia)
Fundamentos de Informática (UNED – Grados Ingeniería) 
Lista Búsqueda de “Neleta” 
Tutor: Antonio Peris (Dénia)
Fundamentos de Informática (UNED – Grados Ingeniería) 
Código completo: 
import java.util.ArrayList; 
import java.util.Iterator; 
public class LibretaAnotaciones 
{ 
private ArrayList<String> notas; 
public LibretaAnotaciones() 
{ 
notas = new ArrayList<String>(); 
notas.add("examen"); 
notas.add("cumple Neleta"); 
notas.add("recoger a los monstruitos"); 
} 
public void guardaNota(String nota) 
{ 
notas.add(nota); 
} 
public void guardaNota(int posicion, String nota) 
{ 
notas.add(posicion,nota); 
} 
public int numeroDeNotas() 
{ 
return notas.size(); 
} 
public void borraNota(int numNota) 
{ 
notas.remove(numNota); 
} 
public void modificaNota(int numNota, String nuevoValor) 
{ 
notas.set(numNota,nuevoValor); 
} 
public void imprimeNotas() 
{ 
for (String notaLocal : notas){ 
System.out.println(notaLocal); 
} 
} 
Tutor: Antonio Peris (Dénia)
Fundamentos de Informática (UNED – Grados Ingeniería) 
public void buscaNota(String patronBusqueda) 
{ 
// recuerda que hay que importar el Iterador 
// inicialización 
Iterator<String> iterador = notas.iterator(); 
boolean encontrado=false; 
//bucle de búsqueda. Comprueba: 
// - Quedan más elementos en la lista 
// - No lo ha encontrado 
while (iterador.hasNext() && !encontrado) { 
String it=iterador.next(); 
// traza por el elemento que accede 
System.out.println("traza elemento "+ it); 
// comprueba si el elemento de la lista contiene 
// el patrón de búsqueda 
if (it.contains(patronBusqueda)){ 
System.out.println("encontrado: " + it); 
encontrado= true; 
} 
} 
System.out.println("Fin de búsqueda"); 
} 
public void iterando() 
{ 
System.out.println("Inicio de biterando"); 
Iterator<String> iterador = notas.iterator(); 
int cont=0; 
System.out.println("ttraza valor inicial iterador.hasNext() "+ iterador.hasNext()); 
System.out.println("empieza el bucle"); 
while (iterador.hasNext()) { 
System.out.println("tvuelta número" + ++cont); 
// traza por el elemento que accede 
System.out.println("ttraza elemento iterador.Next() "+ iterador.next()); 
//siguiente elemento 
System.out.println("tttraza elemento iterador.hasNext() "+ iterador.hasNext()); 
System.out.println("n"); 
} 
System.out.println("Fin de bucle e iterando"); 
} 
Tutor: Antonio Peris (Dénia)
Fundamentos de Informática (UNED – Grados Ingeniería) 
public void iterandoPasoApaso() 
{ 
Iterator<String> iterador = notas.iterator(); 
//siguiente elemento 
System.out.println("¿tiene siguiente elemento? = iterador.hasNext()? "+ iterador.hasNext()); 
// traza por el elemento que accede 
System.out.println("dame es siguiente elemento = iterador.Next() "+ iterador.next()); 
System.out.println("n"); 
System.out.println("¿tiene siguiente elemento? = iterador.hasNext()? "+ iterador.hasNext()); 
// traza por el elemento que accede 
System.out.println("dame es siguiente elemento = iterador.Next() "+ iterador.next()); 
System.out.println("n"); 
System.out.println("n"); 
System.out.println("¿tiene siguiente elemento? = iterador.hasNext()? "+ iterador.hasNext()); 
// traza por el elemento que accede 
System.out.println("dame es siguiente elemento = iterador.Next() "+ iterador.next()); 
System.out.println("n"); 
System.out.println("n"); 
} 
public void iterandorBucleSimple() 
{ 
Iterator<String> iterador = notas.iterator(); 
while (iterador.hasNext()){ 
//iterador.next(); 
System.out.println("elemento "+ iterador.next()); 
} 
} 
public void subeEscalera() 
{ 
ArrayList <String> escalera; 
escalera = new ArrayList<String>(); 
escalera.add("escalon1"); 
escalera.add("escalon2"); 
escalera.add("escalon3"); 
Iterator<String> iterador = escalera.iterator(); 
System.out.println("¿Hay más escalones? "+ iterador.hasNext()); 
while (iterador.hasNext()){ 
//iterador.next(); 
System.out.println("subo "+ iterador.next() + "n"); 
System.out.println("¿Hay más escalones? "+ iterador.hasNext()); 
} 
} 
Tutor: Antonio Peris (Dénia)
Fundamentos de Informática (UNED – Grados Ingeniería) 
public void subeEscaleraEscalon2() 
{ 
ArrayList <String> escalera; 
escalera = new ArrayList<String>(); 
escalera.add("escalon1"); 
escalera.add("escalon2"); 
escalera.add("escalon3"); 
Iterator<String> iterador = escalera.iterator(); 
boolean encontrado=false; 
String it; // variable para utilizar el iterador sin incrementarlo 
System.out.println("¿Hay más escalones? "+ iterador.hasNext()); 
while (iterador.hasNext() && !encontrado){ 
it=iterador.next(); // incrementa el iterador 
System.out.println("subo "+ it + "n"); 
if (it.contains("escalon2")){ 
encontrado=true; 
System.out.println("Encontrado elemento: no continúa"); 
} 
System.out.println("¿Hay más escalones? "+ iterador.hasNext()); 
} 
} 
} 
Tutor: Antonio Peris (Dénia)

Más contenido relacionado

La actualidad más candente (20)

Array List
Array ListArray List
Array List
 
Programación 3: colecciones Java
Programación 3: colecciones JavaProgramación 3: colecciones Java
Programación 3: colecciones Java
 
Tema 6 colecciones por gio
Tema 6   colecciones por gioTema 6   colecciones por gio
Tema 6 colecciones por gio
 
Clase3 asignaciones
Clase3 asignacionesClase3 asignaciones
Clase3 asignaciones
 
Tema 4 clases_y_objetos
Tema 4 clases_y_objetosTema 4 clases_y_objetos
Tema 4 clases_y_objetos
 
colecciones en java
colecciones en javacolecciones en java
colecciones en java
 
Programación 3: tablas de dispersión
Programación 3: tablas de dispersiónProgramación 3: tablas de dispersión
Programación 3: tablas de dispersión
 
Iteradores, Listas y Conjuntos en Java
Iteradores, Listas y Conjuntos en JavaIteradores, Listas y Conjuntos en Java
Iteradores, Listas y Conjuntos en Java
 
Colecciones en java
Colecciones en javaColecciones en java
Colecciones en java
 
Elementos de una clase
Elementos de una claseElementos de una clase
Elementos de una clase
 
Colecciones en Java
Colecciones en JavaColecciones en Java
Colecciones en Java
 
C2 clases en java
C2 clases en javaC2 clases en java
C2 clases en java
 
Multitarea
MultitareaMultitarea
Multitarea
 
Agregación Composición
Agregación ComposiciónAgregación Composición
Agregación Composición
 
Unidad3 poo 4a parte
Unidad3 poo 4a parteUnidad3 poo 4a parte
Unidad3 poo 4a parte
 
Constructores
ConstructoresConstructores
Constructores
 
Algoritmo por seleccion
Algoritmo por seleccionAlgoritmo por seleccion
Algoritmo por seleccion
 
2.android java
2.android   java2.android   java
2.android java
 
Listas enlazadas
Listas enlazadasListas enlazadas
Listas enlazadas
 
Arboles y Colas de Prioridad en Java
Arboles y Colas de Prioridad en JavaArboles y Colas de Prioridad en Java
Arboles y Colas de Prioridad en Java
 

Destacado

Destacado (9)

BEAPROFIT
BEAPROFITBEAPROFIT
BEAPROFIT
 
Elrey2.1
Elrey2.1Elrey2.1
Elrey2.1
 
Elrey2 1
Elrey2 1Elrey2 1
Elrey2 1
 
Cortal consors informe_semanal_de_analisis_tecnico_23-08-11
Cortal consors informe_semanal_de_analisis_tecnico_23-08-11Cortal consors informe_semanal_de_analisis_tecnico_23-08-11
Cortal consors informe_semanal_de_analisis_tecnico_23-08-11
 
BOBIKA-CZECH
BOBIKA-CZECHBOBIKA-CZECH
BOBIKA-CZECH
 
Expropiación petrolera
Expropiación petroleraExpropiación petrolera
Expropiación petrolera
 
Trabajo de computacion
Trabajo de computacionTrabajo de computacion
Trabajo de computacion
 
FONDOS COTIZADOS (ETF)
FONDOS COTIZADOS (ETF)FONDOS COTIZADOS (ETF)
FONDOS COTIZADOS (ETF)
 
12 de noviembre
12 de noviembre12 de noviembre
12 de noviembre
 

Similar a Array listlistas

2 2 2 Arraylist Y Operadores
2 2 2 Arraylist Y Operadores2 2 2 Arraylist Y Operadores
2 2 2 Arraylist Y OperadoresUVM
 
Declaración y creación de un arraylist
Declaración y creación de un arraylistDeclaración y creación de un arraylist
Declaración y creación de un arraylistRobert Wolf
 
ListasEnlazadas-Collections-Generics-Interfaces.docx
ListasEnlazadas-Collections-Generics-Interfaces.docxListasEnlazadas-Collections-Generics-Interfaces.docx
ListasEnlazadas-Collections-Generics-Interfaces.docxJACKMARLONVALQUITRUJ1
 
3 desarollo manejo datos capitulo 4 -02 aplicaciones colecciones
3 desarollo manejo datos capitulo 4 -02 aplicaciones colecciones3 desarollo manejo datos capitulo 4 -02 aplicaciones colecciones
3 desarollo manejo datos capitulo 4 -02 aplicaciones coleccionesluis freddy
 
3 desarollo manejo datos capitulo 4 -01 introduccion colecciones
3 desarollo manejo datos capitulo 4 -01 introduccion colecciones3 desarollo manejo datos capitulo 4 -01 introduccion colecciones
3 desarollo manejo datos capitulo 4 -01 introduccion coleccionesluis freddy
 
Chuleta de aprendizaje de Python3 (1).pdf
Chuleta de aprendizaje de Python3 (1).pdfChuleta de aprendizaje de Python3 (1).pdf
Chuleta de aprendizaje de Python3 (1).pdfvictorpedro20
 
Scala collections
Scala collectionsScala collections
Scala collectionscrissbal94
 
Listas pilascolas edward.mejia-10-1314
Listas pilascolas edward.mejia-10-1314Listas pilascolas edward.mejia-10-1314
Listas pilascolas edward.mejia-10-1314Edward Mejia Gomez
 
Estructuras de datos y algoritmos
Estructuras de datos y algoritmosEstructuras de datos y algoritmos
Estructuras de datos y algoritmosRobert Rodriguez
 
Estructuras de datos y algoritmos
Estructuras de datos y algoritmosEstructuras de datos y algoritmos
Estructuras de datos y algoritmosRobert Rodriguez
 
Programación 3: listas y conjuntos en java
Programación 3: listas y conjuntos en javaProgramación 3: listas y conjuntos en java
Programación 3: listas y conjuntos en javaAngel Vázquez Patiño
 
Biblioteca java.util por gio
Biblioteca java.util por gioBiblioteca java.util por gio
Biblioteca java.util por gioRobert Wolf
 
Clase 03 Listas en Python.pdf
Clase 03 Listas en Python.pdfClase 03 Listas en Python.pdf
Clase 03 Listas en Python.pdfArielManzano3
 

Similar a Array listlistas (20)

2 2 2 Arraylist Y Operadores
2 2 2 Arraylist Y Operadores2 2 2 Arraylist Y Operadores
2 2 2 Arraylist Y Operadores
 
Declaración y creación de un arraylist
Declaración y creación de un arraylistDeclaración y creación de un arraylist
Declaración y creación de un arraylist
 
Taller 1 6
Taller 1 6Taller 1 6
Taller 1 6
 
Taller 1 6
Taller 1 6Taller 1 6
Taller 1 6
 
4_colecciones.ppt
4_colecciones.ppt4_colecciones.ppt
4_colecciones.ppt
 
ListasEnlazadas-Collections-Generics-Interfaces.docx
ListasEnlazadas-Collections-Generics-Interfaces.docxListasEnlazadas-Collections-Generics-Interfaces.docx
ListasEnlazadas-Collections-Generics-Interfaces.docx
 
3 desarollo manejo datos capitulo 4 -02 aplicaciones colecciones
3 desarollo manejo datos capitulo 4 -02 aplicaciones colecciones3 desarollo manejo datos capitulo 4 -02 aplicaciones colecciones
3 desarollo manejo datos capitulo 4 -02 aplicaciones colecciones
 
ListasDoblementeEnlazadas.docx
ListasDoblementeEnlazadas.docxListasDoblementeEnlazadas.docx
ListasDoblementeEnlazadas.docx
 
3 desarollo manejo datos capitulo 4 -01 introduccion colecciones
3 desarollo manejo datos capitulo 4 -01 introduccion colecciones3 desarollo manejo datos capitulo 4 -01 introduccion colecciones
3 desarollo manejo datos capitulo 4 -01 introduccion colecciones
 
Chuleta de aprendizaje de Python3 (1).pdf
Chuleta de aprendizaje de Python3 (1).pdfChuleta de aprendizaje de Python3 (1).pdf
Chuleta de aprendizaje de Python3 (1).pdf
 
Python Pilas y Colas
Python Pilas y ColasPython Pilas y Colas
Python Pilas y Colas
 
Scala collections
Scala collectionsScala collections
Scala collections
 
8.Clases y objetos Java
8.Clases y objetos Java8.Clases y objetos Java
8.Clases y objetos Java
 
Listas pilascolas edward.mejia-10-1314
Listas pilascolas edward.mejia-10-1314Listas pilascolas edward.mejia-10-1314
Listas pilascolas edward.mejia-10-1314
 
Estructuras de datos y algoritmos
Estructuras de datos y algoritmosEstructuras de datos y algoritmos
Estructuras de datos y algoritmos
 
Estructuras de datos y algoritmos
Estructuras de datos y algoritmosEstructuras de datos y algoritmos
Estructuras de datos y algoritmos
 
Programación 3: listas y conjuntos en java
Programación 3: listas y conjuntos en javaProgramación 3: listas y conjuntos en java
Programación 3: listas y conjuntos en java
 
Recolección de basura
Recolección de basuraRecolección de basura
Recolección de basura
 
Biblioteca java.util por gio
Biblioteca java.util por gioBiblioteca java.util por gio
Biblioteca java.util por gio
 
Clase 03 Listas en Python.pdf
Clase 03 Listas en Python.pdfClase 03 Listas en Python.pdf
Clase 03 Listas en Python.pdf
 

Array listlistas

  • 1. Fundamentos de Informática (UNED – Grados Ingeniería) ArrayList en Java2 usando BlueJ Ejemplo: Se puede observar en la lista: • se llama ElementData. • incluye, en este caso, tres elementos “examen”, “cumple Neleta” y “recoger a los monstruitos”. • La longitud indicada en length =10 no nos tiene que preocupar porque podrá crecer automáticamente cuando se necesite. Definición: La clase ArrayList facilita la creación y manipulación listas. Se encuentra en el paquete java.util.ArrayList que deberemos importar antes de usar: Tutor: Antonio Peris (Dénia)
  • 2. Fundamentos de Informática (UNED – Grados Ingeniería) La clase ArrayList es útil cuando implementamos un programa que agrupa datos de un mismo tipo y no sabemos cuántos valores se agruparán. Una lista ofrece dos ventajas significativas: • puede crecer o disminuir cuanto sea necesario. • ofrece métodos genéricos para las operaciones comunes, tal como insertar, eliminar, ver elementos y otros más... (buscar en google con estos parámetros: arraylist java site:oracle.com) Declaración de una Lista: Se escribe el tipo de los elementos dentro de < > y el nombre de la propia lista. De la siguiente forma: private ArrayList <String> notas; En este caso, String es el tipo de dato que se guardará dentro de la lista y notes es el nombre asignado a esta agrupación. La única restricción es que NO podemos utilizar tipos primitivos: int, float, char, double,... Para superar el problema se emplea el autoboxing. = import java.util.ArrayList; public class LibretaAnotaciones { private ArrayList<String> notas; public LibretaAnotaciones() { notas = new ArrayList<String>(); } } Ya tenemos hecha la libreta de anotaciones. Ahora, habrá que gestionar las anotaciones con algunos métodos genéricos que nos ofrece la clase ArrayList. Tutor: Antonio Peris (Dénia)
  • 3. Fundamentos de Informática (UNED – Grados Ingeniería) Métodos más utilizados con un objeto ArrayList : add: añade un elemento Existen dos formas: • Añadir al final de la lista, método: public boolean add(E e). Ejemplo: public void guardaNota(String nota) { notas.add(nota); } Antes Después de notas.add(“recoger monstruitos”); • Añadir en un lugar concreto y resto de elementos posteriores incluidos en la lista pasarán a la siguientes posiciones consecutivas. Método: public void add(int index,E element). El parámetro index será la posición de la lista a añadir el valor el elemento indicado por element. Ejemplo: public void guardaNota(int posicion, String nota) { notas.add(posicion,nota); } Antes Después de notas.add( 1 ,"cumple Neleta"); Tutor: Antonio Peris (Dénia)
  • 4. Fundamentos de Informática (UNED – Grados Ingeniería) get: retorna un elemento. El método public E get(int index). El parámetro index será la posición del elemento solicitado de la lista. Ejemplo: public String leeNota(int numNota) { return notas.get(numNota); } } Lista Retorno de notas.leeNota (1); remove: elimina un elemento El método public E remove(int index). El parámetro index será la posición del elemento a borrar de la lista. El resto de elementos siguientes avanzarán una posición de la lista, evitando que hayan huecos en ella. Ejemplo: public void borraNota(int numNota) { notas.remove(numNota); } Antes Después de notas.remove( 1 ); Tutor: Antonio Peris (Dénia)
  • 5. Fundamentos de Informática (UNED – Grados Ingeniería) set: cambia un elemento El método public E set(int index, E element). El parámetro index será la posición del elemento a cambiar, el valor nuevo será indicado en el parámetro element. Ejemplo: public void modificaNota(int numNota, String nuevoValor) { notas.set(numNota,nuevoValor); } Antes Después de notas.modificaNota(2,”recoger a los niños” ); size: longitud del arrayList El método public int size(). Se utiliza para saber el tamaño de la lista. Ejemplo: public int numeroDeNotas() { return notas.size(); } Lista Retorno de notas.numeroDeNotas(); Tutor: Antonio Peris (Dénia)
  • 6. Fundamentos de Informática (UNED – Grados Ingeniería) Recorrer una lista Existen dos formas: Toda la lista: Mediante un bucle que recorra todo el ArrayList: empieza por el elemento 0 y acaba en el último elemento. Si está vacía no imprime nada. for ( TipoDeObjetoDelArray nombreVariable ParaElBucle : nombreDelArrayList ) { ... sentencias a ejecutar ... } Ejemplo: public void imprimeNotas() { for (String notaLocal : notas){ System.out.println(notaLocal); } } Lista Impresión por el terminal Tutor: Antonio Peris (Dénia)
  • 7. Fundamentos de Informática (UNED – Grados Ingeniería) Hasta que se encuentre el elemento buscado: El Iterador o repetidor es un objeto del mismo tipo que el contenido del ArrayList que se utiliza acceder secuencialmente a los elementos del ArrayList, Iterator<String> iterador = notas.iterator(); Iterator <TipoDeObjetoDelArray> nombreDelIterador = nombreDelArrayList.iterator(); Se requiere importar el iterador que nos servirá para movernos por la lista: import java.util.Iterator; Métodos del Iterador: • hasNext() : devuelve true si la iteración tiene más elementos. Según la figura superior, sería e l bastón . • next() : devuelve el objeto en curso y, luego, automáticamente va al siguiente elemento de la iteración. Según la figura superior, sería la acción de subir y el valor del escalón . Tutor: Antonio Peris (Dénia)
  • 8. Fundamentos de Informática (UNED – Grados Ingeniería) public void subeEscalera(){ ArrayList <String> escalera; escalera = new ArrayList<String>(); escalera.add("escalon1"); escalera.add("escalon2"); escalera.add("escalon3"); Iterator<String> iterador = escalera.iterator(); System.out.println("¿Hay más escalones? "+ iterador.hasNext()); while (iterador .hasNext() ) { System.out.println("subo "+ iterador .next() + "n"); System.out.println("¿Hay más escalones? "+ iterador.hasNext()); } } Con lo visto hasta ahora, este mecanismo es similar al for visto anteriormente. Esto es, recorrerá todo el ArrayList. Vamos a establecer las condiciones adicionales de finalización del recorrido: ▪ Llegue al final de la lista sin encontrar el elemento (similar al for). Ejemplo anterior. ▪ Encuentra el elemento: se le añade una nueva condición (en el ejemplo siguiente, encuentra “escalon2”) public void subeEscaleraEscalon2(){ ArrayList <String> escalera; escalera = new ArrayList<String>(); escalera.add("escalon1"); escalera.add("escalon2"); escalera.add("escalon3"); Iterator<String> iterador = escalera.iterator(); boolean encontrado=false; String it; // variable para utilizar el iterador sin incrementarlo System.out.println("¿Hay más escalones? "+ iterador.hasNext()); while (iterador.hasNext() && !encontrado){ it=iterador.next(); // incrementa el iterador y almacena en i t System.out.println("subo "+ it + "n"); if (it.contains("escalon2")){ encontrado=true; System.out.println("Encontrado elemento: no continúa"); } System.out.println("¿Hay más escalones? "+ iterador.hasNext()); } } Tutor: Antonio Peris (Dénia)
  • 9. Fundamentos de Informática (UNED – Grados Ingeniería) Resultado por terminal del método anterior subeEscaleraEscalon2(): Ejemplo de la iteración paso a paso sin bucles: public void iterandoPasoApaso(){ Iterator<String> iterador = notas.iterator(); //siguiente elemento System.out.println("tttraza elemento iterador.hasNext() "+ iterador.hasNext()); // traza por el elemento que accede y, luego, va al siguiente System.out.println("ttraza elemento iterador.next() "+ iterador.next()); System.out.println("n"); //siguiente elemento System.out.println("tttraza elemento iterador.hasNext() "+ iterador.hasNext()); // traza por el elemento que accede y, luego, va al siguiente System.out.println("ttraza elemento iterador.next() "+ iterador.next()); System.out.println("n"); //siguiente elemento System.out.println("tttraza elemento iterador.hasNext() "+ iterador.hasNext()); // traza por el elemento que accede y, luego, va al siguiente System.out.println("ttraza elemento iterador.next() "+ iterador.next()); System.out.println("n"); // si se añadiese un elemento más, como no existe, daría un error/excepción } Tutor: Antonio Peris (Dénia)
  • 10. Fundamentos de Informática (UNED – Grados Ingeniería) De una manera genérica: // inicialización del iterador o repetidor Iterator <TipoDeObjetoDelArray> nombreVariableParaElBucle = nombreDelArrayList.iterator(); // iniciado de las varibles u objetos temporales para uso dentro del bucle boolean encontrado=false; TipoDeObjetoDelArray it; // bucle que recorrerá el ArrayList mientras se cumplan las dos condiciones while (nombreVariableParaElBucle.hasNext() && !encontrado) { it = nombreVariableParaElBucle.next() ¿ it es el elemento buscado? ….... .. . … } Ejemplo con la libreta de anotaciones: public void buscaNota(String patronBusqueda) { // recuerda que hay que importar el Iterador // inicialización Iterator<String> iterador = notas.iterator(); boolean encontrado=false; String it; //bucle de búsqueda. Comprueba: // - Quedan más elementos en la lista // - No lo ha encontrado while (iterador.hasNext() && !encontrado) { it=iterador.next(); // traza por el elemento que accede System.out.println(“traza elemento”+ it); // comprueba si el elemento de la lista contiene // el patrón de búsqueda if (it.contains(patronBusqueda)){ System.out.println("encontrado: " + it); encontrado= true; } } System.out.println("Fin de búsqueda"); } Tutor: Antonio Peris (Dénia)
  • 11. Fundamentos de Informática (UNED – Grados Ingeniería) Lista Búsqueda de “Neleta” Tutor: Antonio Peris (Dénia)
  • 12. Fundamentos de Informática (UNED – Grados Ingeniería) Código completo: import java.util.ArrayList; import java.util.Iterator; public class LibretaAnotaciones { private ArrayList<String> notas; public LibretaAnotaciones() { notas = new ArrayList<String>(); notas.add("examen"); notas.add("cumple Neleta"); notas.add("recoger a los monstruitos"); } public void guardaNota(String nota) { notas.add(nota); } public void guardaNota(int posicion, String nota) { notas.add(posicion,nota); } public int numeroDeNotas() { return notas.size(); } public void borraNota(int numNota) { notas.remove(numNota); } public void modificaNota(int numNota, String nuevoValor) { notas.set(numNota,nuevoValor); } public void imprimeNotas() { for (String notaLocal : notas){ System.out.println(notaLocal); } } Tutor: Antonio Peris (Dénia)
  • 13. Fundamentos de Informática (UNED – Grados Ingeniería) public void buscaNota(String patronBusqueda) { // recuerda que hay que importar el Iterador // inicialización Iterator<String> iterador = notas.iterator(); boolean encontrado=false; //bucle de búsqueda. Comprueba: // - Quedan más elementos en la lista // - No lo ha encontrado while (iterador.hasNext() && !encontrado) { String it=iterador.next(); // traza por el elemento que accede System.out.println("traza elemento "+ it); // comprueba si el elemento de la lista contiene // el patrón de búsqueda if (it.contains(patronBusqueda)){ System.out.println("encontrado: " + it); encontrado= true; } } System.out.println("Fin de búsqueda"); } public void iterando() { System.out.println("Inicio de biterando"); Iterator<String> iterador = notas.iterator(); int cont=0; System.out.println("ttraza valor inicial iterador.hasNext() "+ iterador.hasNext()); System.out.println("empieza el bucle"); while (iterador.hasNext()) { System.out.println("tvuelta número" + ++cont); // traza por el elemento que accede System.out.println("ttraza elemento iterador.Next() "+ iterador.next()); //siguiente elemento System.out.println("tttraza elemento iterador.hasNext() "+ iterador.hasNext()); System.out.println("n"); } System.out.println("Fin de bucle e iterando"); } Tutor: Antonio Peris (Dénia)
  • 14. Fundamentos de Informática (UNED – Grados Ingeniería) public void iterandoPasoApaso() { Iterator<String> iterador = notas.iterator(); //siguiente elemento System.out.println("¿tiene siguiente elemento? = iterador.hasNext()? "+ iterador.hasNext()); // traza por el elemento que accede System.out.println("dame es siguiente elemento = iterador.Next() "+ iterador.next()); System.out.println("n"); System.out.println("¿tiene siguiente elemento? = iterador.hasNext()? "+ iterador.hasNext()); // traza por el elemento que accede System.out.println("dame es siguiente elemento = iterador.Next() "+ iterador.next()); System.out.println("n"); System.out.println("n"); System.out.println("¿tiene siguiente elemento? = iterador.hasNext()? "+ iterador.hasNext()); // traza por el elemento que accede System.out.println("dame es siguiente elemento = iterador.Next() "+ iterador.next()); System.out.println("n"); System.out.println("n"); } public void iterandorBucleSimple() { Iterator<String> iterador = notas.iterator(); while (iterador.hasNext()){ //iterador.next(); System.out.println("elemento "+ iterador.next()); } } public void subeEscalera() { ArrayList <String> escalera; escalera = new ArrayList<String>(); escalera.add("escalon1"); escalera.add("escalon2"); escalera.add("escalon3"); Iterator<String> iterador = escalera.iterator(); System.out.println("¿Hay más escalones? "+ iterador.hasNext()); while (iterador.hasNext()){ //iterador.next(); System.out.println("subo "+ iterador.next() + "n"); System.out.println("¿Hay más escalones? "+ iterador.hasNext()); } } Tutor: Antonio Peris (Dénia)
  • 15. Fundamentos de Informática (UNED – Grados Ingeniería) public void subeEscaleraEscalon2() { ArrayList <String> escalera; escalera = new ArrayList<String>(); escalera.add("escalon1"); escalera.add("escalon2"); escalera.add("escalon3"); Iterator<String> iterador = escalera.iterator(); boolean encontrado=false; String it; // variable para utilizar el iterador sin incrementarlo System.out.println("¿Hay más escalones? "+ iterador.hasNext()); while (iterador.hasNext() && !encontrado){ it=iterador.next(); // incrementa el iterador System.out.println("subo "+ it + "n"); if (it.contains("escalon2")){ encontrado=true; System.out.println("Encontrado elemento: no continúa"); } System.out.println("¿Hay más escalones? "+ iterador.hasNext()); } } } Tutor: Antonio Peris (Dénia)