Está en la página 1de 39

Strings, Arrays, Vector,

ArrayList

Java Arrays y Cadenas 1

Arrays y cadenas de
caracteres (String)
Tanto los arrays como las cadenas son tipos
de objetos privilegiados en Java ya que
existen facilidades que simplifican su manejo
Por ejemplo se proporcionan primitivas que
simplifican su creación y su inicialización
La clase String se incluye en el API estándar
de Java dentro del paquete básico java.lang

Java Arrays y Cadenas 2


Strings
La clase java.lang.String implementa
cadenas
Las cadenas son objetos constantes e
inmutables
 Su tamaño es constante
 Cambiar una cadena significa construir una
nueva

Java Arrays y Cadenas 3

String
 Se puede:
String s = “Hola”;
 Es equivalente a:
String s;
s= new String(“Hola”);

Java Arrays y Cadenas 4


Cadenas
Creación de cadenas
 String saludo = “hola”; // creación de una cadena
asignando un literal
 String cadena = new String(); // creación de una
cadena vacía
 Diversos constructores
 String( String cadena );
 String( char array[] );
 String( char array[],int desplazamiento,int cuenta );
Longitud de la cadena con el método length()
 System.out.println(“longitud de la cadena: “ +
saludo.length());
Java Arrays y Cadenas 5

clase String en documentación


de Java.
http://download.oracle.com/javase/6/docs/api/

Java Arrays y Cadenas 6


clase String en documentación
de Java. Constructores

Java Arrays y Cadenas 7

clase String en documentación


de Java. Métodos

Java Arrays y Cadenas 8


clase String en documentación
de Java. Métodos

Java Arrays y Cadenas 9

clase String en documentación


de Java. Métodos

Java Arrays y Cadenas 10


clase String en documentación
de Java. Métodos

Java Arrays y Cadenas 11

clase String en documentación


de Java. Métodos

Java Arrays y Cadenas 12


clase String en documentación
de Java. Métodos

Java Arrays y Cadenas 13

Comparación de cadenas
Con equals() se sabe si dos cadenas son
iguales
 Con == se comparan referencias
 Se diferencia entre mayúsculas y minúsculas
Con equalsIgnoreCase() no se diferencia
entre mayúsculas y minúsculas
Con compareTo() se obtiene <0, 0, ó >0
según el argumento sea menor, igual o
mayor que la cadena
Con toLowerCase() y con toUpperCase() se
convierte una cadena a minúculas o
mayúsculas respectivamente
Java Arrays y Cadenas 14
Operaciones con cadenas
Se pueden concatenar con el operador +
 Es el único operador sobrecargado en Java
 saludo = saludo + “ que tal”;
 Cuando se concatenan cadenas se realiza copia de
los operandos
 Una cadena se puede concatenar con cualquier
otro valor de otro tipo de datos
Con charAt(indice ) se obtiene el carácter
situado en la posición índice de la cadena
 La primera posición de una cadena, si existe, es la
posición 0
Tiene otros muchos métodos de utilidad =>
consultar en laJava
API de Java
Arrays y Cadenas 15

El método toString()
Sirve para convertir un objeto en un String.
Sirve para convertir un tipo básico a String.
La clase Object define un método toString(), por
defecto, que retorna el nombre de la clase y la
dirección de su puntero. Normalmente no es muy
útil por lo que suele estar sobrescrita.

Date hoy = new Date ();


....
System.out.println(hoy.toString());
Java Arrays y Cadenas 16
Método toString
 Conversión directa de un tipo básico en
cadena
 Llamada a toString() para cualquier otro objeto
 Todos los objetos tienen el método
toString() heredado de Object
 Redefiniendolo se puede obtener una
representación como cadena del objeto (muy
útil en depuración)

Java Arrays y Cadenas 17

Método toString
public class
public class Punto
Punto {{
int x;
int x; int y;
int y;
public Punto(int
public Punto(int x,x, int
int y)
y) {{
this.x == x;
this.x x; this.y
this.y == y;
y;
}}
public String
public String toString()
toString() {{
return “Punto[“ ++ xx ++ ”,”
return “Punto[“ ”,” ++ yy +”]”;
+”]”;
}}
public static
public static void
void main(String
main(String args[])
args[]) {{
Punto punto
Punto punto == new
new Punto(2,3);
Punto(2,3);
System.out.println( "visualizar
System.out.println( "visualizar datos
datos
del punto”+
del punto”+ punto
punto );}}
);}}

Java Arrays y Cadenas 18


Ejercicio 1
Ejecutar el método toString() heredado de
Object en la clase Rectángulo

Java Arrays y Cadenas 19

Ejercicio
Re escribir
el método
toString()
de
Rectangulo

Java Arrays y Cadenas 20


Conversión de Cadenas
Integer(String s); //String a Integer
Integer(int i); //primitivo a Integer
Integer.valueOf("4"); //String a Integer
int i = 4;
Integer objInt = new Integer(i);
int j = objInt.intValue(); //Integer a primitivo
String s = objInt.toString(); //Integer a String
int k =Integer.parseInt("4");//String a primitivo

Java Arrays y Cadenas 21

Clases envolvente
Permiten representar tipos básicos de datos, como
objetos.
Tipo de dato básico Clase e nvolve nte
boolean Boolean
byte Byte

char Character
short Short
int Integer
long Long
float Float
double Java Double
Arrays y Cadenas 22
Clases envolvente
Cada tipo primitivo Java tiene su correspondiente
envolvente (wapper class) en le paquete java.lang.
Cada objeto de la clase envolvente encapsula un
valor primitivo simple.
El objeto de clase envolvente se construye pasando
el valor al constructor apropiado. Por ejemplo:

int pInt = 500;


Integer wInt = new Integer(pInt);

Java Arrays y Cadenas 23

Clases envolvente
Integer i = new Integer(7) Integer

intValue()

i
longValue() 7 doubleValue()

floatValue()

Java Arrays y Cadenas 24


Conversiones
int/Integer/String
Integer(String s); //String a Integer
Integer(int i); //primitive a Integer
Integer.valueOf("4"); //String a Integer
int i = 4;
Integer objInt = new Integer(i);
int j = objInt.intValue(); //Integer a primitive
String s = objInt.toString(); //Integer a String
int k = Integer.parseInt("4"); //String a
//primitive

Java Arrays y Cadenas 25

Arrays
Colección de variables todas del mismo tipo
 Tamaño fijo
 Pueden ser variables simples o referencias a objetos
Declaración de variables array: dos
alternativas
 tipoValor [] variableArray;
 tipoValor variableArray [];
Array de tipos básicos de datos
 int vector[]; // vector es un array de enteros
 int [] vector; // igual que la declaración anterior
 int vector[10]; // ERROR: no se especifica el tamaño
en la declaración

Java Arrays y Cadenas 26


Arrays
int iArray[] = new int[3]; // array of 3 ints

iArray
0 0 0

iArray[1]

iArray[0] iArray[2]

Java Arrays y Cadenas 27

Arrays
Definición: reserva de la memoria para
el array
 Antes de usarse, un array tiene que
crearse (con new):
intvector[] = new int[10]; // array de 10 enteros:
vector[0]..vector[9]
 En este momento se especifica el tamaño
del array (que no forma parte del tipo de
datos)

Java Arrays y Cadenas 28


Arrays
Empleado[ ] empArray = new Empleado[5];

empArray

null

null

Java Arrays y Cadenas 29

Acceso a los elementos y arrays


de objetos
Acceso a los elementos del array
 variableArray[indice]
 primer elemento indice 0
Declaración de arrays de objetos
 String S[]; // un array de cadenas -- Referencias a cadenas
 String S,T[]; // S es una cadena y T un array de cadenas
 String[] S,T; // Ambos, S y T, son arrays de cadenas

Java Arrays y Cadenas 30


Arrays de tipos simples y de
objetos
Tipos simples 0
1
 int [] array; array null 2
 // reserva de memoria array

 array= new int[10];


arrayCadenas null9 0
null 1
null 2

null 9

Java Arrays y Cadenas 31

Arrays de tipos simples y de


objetos
Objetos
 String [] arrayCadenas;
 // Definición: reserva de memoria para las
referencias a los objetos
 arraysCadenas = new String[10];
 // iniacilización reserva de memoria para los objetos
del array
 for (int i=0; i<arrayCadenas.length; i++)
 arrrayCadenas[i] = new String();
arrayCadenas 0
1
2

Java 9 Arrays y Cadenas 32


Arrays
 Tamaño de un array: miembro length
int[] a=new int[100];
 a.length // correcto
 a.length() // ERROR: no se usan paréntesis
 for (int i = 0; i < a.length; i++) a[i]=i;
 Comprobación automática de límites del
array
 Si se intenta acceder fuera de los límites del
array (entre 0 y length-1), se produce la
excepción IndexOutOfBoundsException.

Java Arrays y Cadenas 33

Arrays
 Se puede especificar una lista de inicialización
int[] arrayNumeros = { 147, 323, 89 };
 No se utiliza el operador new y no se especifica el tamaño
 Es equivalente a:
int[] arrayNumeros;
arrayNumeros= new int [3];
arrayNumeros[0]=147;
arrayNumeros[1]=323;
arrayNumeros[2]=89;

Java Arrays y Cadenas 34


Arrays multidimensionales
Array de arrays
 Declaración, definición e inicialización
 int[][] array; // creación de la referencia
 array = new int[2]; // array con dos filas
 for (int i = 0; i < array.length; i++)
 array[i] = new int[5]; // cada fila puede tener distinto
tamaño
 Cada fila puede tener un tamaño diferente
 Si todas las filas tienen el mismo tamaño
 array = new int[2][5]; // lo mismo que las dos sentencias
anteriores
 Se permiten declaraciones parciales en las que al
final pueden existir dimensiones sin especificar
 int[][] arrayPar = new int[3][];

Java Arrays y Cadenas 35

Arrays multidimensionales
 Inicialización mediante listas
 int[][] array = { {79, 87, 94, 82, 67}, {98, 87, 81, 74, 91} };

array

79 87 94 82 67 98 87 81 74 91
0,0 0,1 0,2 0,3 0,4 1,0 1,1 1,2 1,3 1,4

Java Arrays y Cadenas 36


Arrays multidimensionales

 Una vez que se reserva el espacio de memoria


el tamaño de un array no puede cambiar
 String[] miArray = new String[20];
 miArray = new String[10]; // correcto se pierde la
referencia al array anterior y se crea otro
 miArray.length = 30; // ERROR - no permitido

Java Arrays y Cadenas 37

Arrays
Límites de los arrays
 Todos los vectores empiezan por 0.
 El número de elementos del vector se almacena
en el atributo length del propio vector.
Un array no se puede redimensionar
Se puede utilizar la misma variable referencia
para apuntar a otro vector diferente:
int elements [ ] = new int [6];
elements = new int [10];

Java Arrays y Cadenas 38


Argumentos de entrada
Se pueden recoger argumentos de entrada en un array de
Strings llamado args
En Eclipse se pueden dar los argumentos seleccionando la
clase\botón derecho\Run as\Open Run Dialog

Java Arrays y Cadenas 39

Ejercicio 2: Leer Argumentos


de entrada

Java Arrays y Cadenas 40


Ejercicio 2: leer Argumentos de
entrada con línea de comandos

Java Arrays y Cadenas 41

Ejercicio 3: conjunto de
Enteros
Define la clase ConjuntoDeEnteros para tratar con
conjuntos de números enteros comprendidos entre 0 y 100.
Para representar estos conjuntos se usa un array de
booleanos. Además del constructor, la clase debe incluir los
siguientes métodos públicos:
a. boolean pertenece(int e), que averigua si e pertenece al conjunto
b. void añade(int e), que añade e al conjunto
c. void elimina(int e), que elimina e del conjunto, si estaba; en otro caso,no
hace nada
d. void imprimeConjunto(), que imprime los elementos del conjunto
e. boolean equals(CojuntoDeEnteros c), que averigua si dos conjuntos son
iguales
f. void union(ConjuntoDeEnteros c), que calcula la unión de dos conjuntos
y deja el resultado en el conjunto que recibe el mensaje
Java Arrays y Cadenas 42
Ejercicio 3: conjunto de Enteros

Java Arrays y Cadenas 43

Ejercicio:
conjunto
de
Enteros

Java Arrays y Cadenas 44


Ejercicio 4: array de Referencias
a Objetos
Define la clase Buzon para gestionar un buzón de correos electrónicos
ordenados según el orden de llegada. Para representar el buzón se usa un
array de correos electrónicos; estos, a su vez, son objetos de la clase Correo y
tienen como atributos un String, con el contenido del correo, y un indicativo
para saber si han sido leídos o no. Define la clase Correo con los métodos que
creas convenientes, sabiendo que la clase Buzon debe incluir los siguientes
métodos públicos:
a. int numeroDeCorreos(), que calcula cuántos correos hay en el buzón
b. void añade(Correo c), que añade c al buzon
c. boolean porLeer(), que determina si quedan correos por leer
d. String muestraPrimerNoLeido(), que muestra el primer correo no leído
e. String muestra(int k), que muestra el correo k-ésimo, se haya leído o no
f. void elimina(int k), que elimina el correo k-ésimo.

Java Arrays y Cadenas 45

Ejercicio:
Correo

Java Arrays y Cadenas 46


Ejercicio:
Buzón

Java Arrays y Cadenas 47

Ejercicio:
Buzón

Java Arrays y Cadenas 48


Ejercicio 4: Probar Buzón

Java Arrays y Cadenas 49

La clase Vector

Java Arrays y Cadenas 50


API de una colección
Una colección (o contenedor) es un objeto único, que
representa un grupo de objetos, sus elementos.
Se da soporte a las clases Vector, Bits,BitSet, Stack,
Hashtable, LinkedList...
El API de una colección contiene interfaces que
mantienen los objetos como:
 Collection . Un grupo de objetos desordenados
 Set . Un grupo de objetos sin duplicados
 List . Un grupo de objetos ordenados, en el que se
admiten duplicados.

Java Arrays y Cadenas 51

Ejemplo con la clase Vector


UnVector

...

addElement(o:Object)
capacity():int
elementAt(i:int):Object
removeAllElements()
remove(o:Object):boolean
toString():String
...
Java Arrays y Cadenas 52
La clase Vector
La clase Vector proporciona métodos para
trabajar con vectores dinámicos de
elementos de diferentes tipos.

Java Arrays y Cadenas 53

clase Vector en
documentación de Java
http://download.oracle.com/javase/6/docs/api/

Java Arrays y Cadenas 54


clase Vector en documentación
de Java. Constructores
http://download.oracle.com/javase/6/docs/api/

Java Arrays y Cadenas 55

Constructores de la clase
Vector
public Vector () - construye un vector vacío
public Vector (int initialCapacity) - construye un
vector vacío de una determinada capacidad
public Vector (int initialCapacity, int
capacityIncrement) - Construye un vector vacío,
con una capacidad determinada y un valor de
capacityIncrement determinada

Java Arrays y Cadenas 56


clase Vector en
documentación de Java. Datos
http://download.oracle.com/javase/6/docs/api/

Java Arrays y Cadenas 57

Variables de la clase Vector


protected int capacityIncrement - El tamaño
del incremento. Si es 0, cada vez que el
buffer tenga que aumentar, el tamaño se
dobla.
protected int elementCount - El número de
elementos en el buffer.
protected Object elementData [] - El buffer
donde se almacenan los elementos.

Java Arrays y Cadenas 58


clase Vector en documentación
de Java. Métodos

Java Arrays y Cadenas 59

clase Vector en documentación


de Java. Métodos

Java Arrays y Cadenas 60


clase Vector en documentación
de Java. Métodos

Java Arrays y Cadenas 61

clase Vector en documentación


de Java. Métodos

Java Arrays y Cadenas 62


Métodos de la clase Vector
public final int size () - Retorna el número de
elementos en el vector.
public final boolean contains (Object elem) -
Retorna true si el objeto especificado es un valor
de la colección.
public final int indexOf (Object elem) - Busca el
objeto especificado desde la primera posición y
retorna un índice (o -1 si el elemento no está).
Utiliza el método equals(), de modo que si el
objeto no tiene sobrescrito el método equals()
de la clase Object, sólo comparará los punteros,
no los contenidos.
Java Arrays y Cadenas 63

Métodos de la clase Vector


public final synchronized Object elementAt(int
index) - Retorna el elemento que corresponde al
índice que se le pasa. Si el índice es incorrecto, y
lanza la excepción:
ArrayIndexOutOfBoundsException.
public final synchronized void setElementAt
(Object obj, int index) - Reemplaza el elemento
que corresponde al índice, por el objeto que se
le pasa.
Si el índice no es correcto, lanza la excepción:
ArrayIndexOutOfBoundsExceptions.
Java Arrays y Cadenas 64
Métodos de la clase Vector
public final synchronized void removeElementAt (int index)
- Borra el elemento especificado por el índice. Si el índice
no es válido, lanza la excepción:
ArrayIndexOutOfBoundsExceptions.
public final synchronized void addElement (Object obj) -
Añade el objeto que se le pasa, en la última posición.
public final synchronized void insertElementAt(Object obj,
int index) - Inserta el objeto que se le pasa en la
posición que indica el índice, pasando hacia arriba todos
los elementos con un índice igual o superior. Si el índice
es inválido, lanza la excepción:
ArrayIndexOutOfBoundsExceptions.

Java Arrays y Cadenas 65

Recorrido de un Vector
Vector lines = new Vector();
....
// imprime los elementos del vector
for (int i=0; i<lines.size(); ++i){
System.out.println(lines.elementAt(i));
}

Java Arrays y Cadenas 66


Iterator
I
Collection

Object

implements

I
Iterator
implements
iterator()
hasNext()
Iterator Object

next()
Java Arrays y Cadenas 67

Interface Iterator

Java Arrays y Cadenas 68


Recorrido de un Vector
import java.util.*;
public class BuzonConVector {
private Vector<Correo> v ;

void imprimeTodos(){
Iterator<Correo> e=v.iterator();
while( e.hasNext())
System.out.println( e.next());
}
...
} Java Arrays y Cadenas 69

Colecciones "bag" data key


no dupes sequence indexed keyed sequence
"File"
Structure Set SortedSet List Map SortedMap

Hashtable HashSet HashMap

Balanced
TreeSet TreeMap
Tree

Resizable
Array
ArrayList

Linked
List
LinkedList

Vector
Synchronized hashTable
Stack
Java Arrays y Cadenas 70
Ejercicio 5: Buzón con Vector

Java Arrays y Cadenas 71

Ejercicio 6: Buzón con


LinkedList (depreca a Vector)

Java Arrays y Cadenas 72


Ejercicio 6: Buzón con
LinkedList

Java Arrays y Cadenas 73

Ejercicio 6: Buzón con


LinkedList

Java Arrays y Cadenas 74


Ejercicio 6: Buzón con
LinkedList

Java Arrays y Cadenas 75

Ejercicio 6: Buzón con


LinkedList

Java Arrays y Cadenas 76


Ejercicio 7: Banco
Define la clase Banco para gestionar un banco de cuentas corrientes.
Para ello debes definir la clase Cuenta cuyos objetos tienen como atributos
un String para el propietario, un entero para su clave de identificación, y un
entero para su saldo. La clase Cuenta debe disponer de los siguientes métodos
públicos:
a. Métodos de acceso para los atributos de la clase
b. void ingreso(int k), que ingresa k euros en la cuenta
c. void reintegro(int k), que retira k euros de la cuenta
d. void imprimeCuenta(), que imprime los datos de una cuenta.

Los objetos de la clase Banco están representados mediante un array de


objetos de la clase Cuenta. Esta clase debe incluir los siguientes métodos
públicos:
a. int numeroDeCuentas(), que calcula el número de cuentas del banco
b. void añadeCuenta(String propietario, int saldo), que crea una nueva
cuenta con los datos que se pasan por parámetro, y le asigna un número
aleatorio como clave de
Javaidentificación
Arrays y Cadenas 77

Ejercicio 7: Banco
c. void eliminaCuenta(int clave), que elimina la cuenta que tiene esta
clave de identificación
d. int daSaldo(int clave), que devuelve el saldo de la cuenta dada por su
clave de identificación
f. void ingresa(int clave, int k), que ingresa k euros en la cuenta dada por
su clave de identificación
g. void reintegra(int clave, int k), que retira k euros de la cuenta dada por
su clave de identificación
h. void imprimeCuenta(int clave), que imprime los datos de una clave
dada por su clave de identificación
i. int saldoTotal(), que calcula el total de dinero almacenado en el banco
j. void imprimeBanco(), que imprime los datos de todas las cuentas del
banco.

Java Arrays y Cadenas 78

También podría gustarte