Sunteți pe pagina 1din 4

arrayList

Esta clase agrupa elementos como un array. Es equivalente a Vector, pero con las mejoras introducidas
por Java 2 se puede acceder a cualquier elemento, insertar o borrar a partir del ndice en
cualquier posicin, aunque resulta un tanto ineficiente si se realiza en posiciones intermedias.
La clase ArrayList tiene tres constructores:
public ArrayList();
public ArrayList(int capacidad);
public ArrayList(Collection c);
Por ejemplo, se crea una coleccin con los elementos de un vector:
Vector v = new Vector();
ArrayList al = new ArrayList(v);
La clase ArrayList implementa los mtodos de la interfaz List, y el mtodo clone() de la
interfaz Cloneable para poder crear una copia independiente de la coleccin.
Ejemplo 17.8
Se realizan las operaciones de aadir, eliminar, buscar y reemplazar con una coleccin de tipo
ArrayList.
La coleccin va a estar formada por cadenas (String) ledas del teclado. Una vez formada
la coleccin se elimina una cadena concreta y se reemplaza el elemento que ocupa la posicin
central. Para realizar una bsqueda se utiliza el mtodo indexOf() que devuelve la posicin que
ocupa, o bien -1; a partir de esta posicin se crea un iterador llamando al mtodo listIterator()
con el fin de recorrer y, a la vez, escribir los elementos.
import java.util.*;
import java.io.*;
public class ListaArray
{
public static void main(String[] args)
{
BufferedReader entrada = new BufferedReader( new
InputStreamReader(System.in));
List av = new ArrayList();
String cd;
System.out.println("Datos de entrada (adios para acabar)");
try {
do {
cd = entrada.readLine();
if (! cd.equalsIgnoreCase("adios"))
av.add(cd);
else break;
} while (true);
System.out.println("Lista completa:" + av);
// elimina una palabra
System.out.println("Palabra a eliminar: ");
cd = entrada.readLine();
if (av.remove(cd))
System.out.println("Palabra borrada, lista actual: + av");
else
System.out.println("No esta en la lista la palabra");
// reemplaza elemento que est en el centro
av.set(av.size()/2, "NuevaCadena");
System.out.println("Lista completa:" + av);
// busqueda de una palabra
System.out.println("Bsqueda de una palabra: ");
cd = entrada.readLine();
int k = av.indexOf(cd);
// crea iterador y recorre la lista hacia adelante
if (k >= 0)
{
System.out.println("Recorre la lista a partir de k: "+k);
ListIterator ls = av.listIterator(k);
while(ls.hasNext())
508 Estructuras de datos en Java
{
System.out.print((String)ls.next() + " ");
}
}
}
catch(Exception e) {;}
}
}
LinkedList
Esta clase organiza los elementos de una coleccin a la manera de una lista doblemente enlazada.
Las operaciones de insercin y borrado en posiciones intermedias son muy eficientes; por el
contrario, el acceso a un elemento por ndice es ineficiente.
La clase dispone de un constructor sin argumentos que crea una lista vaca, y otro constructor
que crea la lista con los elementos de otra coleccin.
public LinkedList();
public LinkedList(Collection c);
Implementa la interfaz Cloneable; las operaciones generales de las listas y mtodos especficos
que operan sobre el primer y ltimo elemento son:
public Object getFirst()
public Object getLast()
public void addFirst(Object ob)
public void addLast(Object ob)
public Object removeFirst()
public Object removeFirst()
Se puede usar LinkedList para crear una estructura de datos Cola o Pila. Aadir datos a
la Cola se hace con addLast(), eliminar con removeFirst() y obtener el elemento frente con
getFirst().
Ejemplo 17.9
Encontrar un numero capica ledo del dispositivo estndar de entrada.
Se utiliza conjuntamente una Cola y una Pila. El nmero se procesa dgito a dgito (carcter
del '0' al '9' ), que se ponen en la cola y, a la vez, en la pila, pero como objeto de tipo
Character. Para comprobar si es capica: se extraen consecutivamente elementos de la cola y
de la pila, y se comparan por igualdad; si no se producen coincidencias es seal de que el nmero
no es capica. El nmero es capica si el proceso de comprobacin termina coincidiendo todos
los dgitos en orden inverso, por consiguiente, tanto la pila como la cola quedan vacas. Tanto la
pila como la cola son instancias de LinkedList<Character>.
import java.util.*;
import java.io.*;
class Cola
{
private LinkedList<Character> qq;
Colecciones 509
public Cola ()
{
qq = new LinkedList<Character> ();
}
public boolean colaVacia()
{
return qq.isEmpty();
}
public void insertar(Character elemento)
{
qq.addLast(elemento);
}
public Character quitar() throws Exception
{
return qq.removeFirst();
}
public void borrarCola()
{
qq.clear();
}
public Character frenteCola() throws Exception
{
return qq.getFirst();
}
}
class Pila
{
private LinkedList<Character> pila;
public Pila()
{
pila = new LinkedList<Character> ();
}
public boolean pilaVacia()
{
return pila.isEmpty();
}
public void insertar(Character elemento)
{
pila.addFirst(elemento);
}
public Character quitar()throws Exception
{
return pila.removeFirst();
}
public void limpiarPila()
{
pila.clear();
}
public Character cimaPila() throws Exception
{
return pila.getFirst();
}
}
public class capicuaCola
{
public static void main(String[] args)
{
BufferedReader entrada = new BufferedReader( new
InputStreamReader(System.in));
510 Estructuras de datos en Java
String cd;
try {
do {
System.out.println("Numero a probar si es capicua ");
cd = entrada.readLine();
if (! esCapicua(cd))
System.out.println(cd + " No es capicua");
else
{
System.out.println(cd +
" es capicua, fin del programa");
break;
}
} while (true);
}
catch(Exception e) {;}
}
static boolean esCapicua(String nm) throws Exception
{
Cola q = new Cola();
Pila pila = new Pila();
for (int i = 0; i < nm.length(); i++)
{
q.insertar(new Character(nm.charAt(i)));
pila.insertar(new Character(nm.charAt(i)));
}
boolean es = true;
while (es && !q.colaVacia())
{
Character c1, c2;
c1 = q.quitar();
c2 = pila.quitar();
es = es && (c1.equals(c2));
}
return es;
}
}
Ejecucin
Numero a probar si es capicua
23456
23456 No es capicua
Numero a probar si es capicua
123321
123321 es capicua, fin del programa

S-ar putea să vă placă și