You are on page 1of 39

Strings, Arrays, Vector, ArrayList

Java

Arrays y Cadenas

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 creacin y su inicializacin La clase String se incluye en el API estndar de Java dentro del paquete bsico java.lang

Java

Arrays y Cadenas

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

Java

Arrays y Cadenas

String
Se puede:

String s = Hola;
Es equivalente a:

String s; s= new String(Hola);

Java

Arrays y Cadenas

Cadenas
Creacin de cadenas
String saludo = hola; // creacin de una cadena
asignando un literal

String cadena = new String(); // creacin de una cadena vaca Diversos constructores
String( String cadena ); String( char array[] ); String( char array[],int desplazamiento,int cuenta );

Longitud de la cadena con el mtodo length()


System.out.println(longitud de la cadena: + saludo.length());
Java Arrays y Cadenas 5

clase String en documentacin de Java.


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

Java

Arrays y Cadenas

clase String en documentacin de Java. Constructores

Java

Arrays y Cadenas

clase String en documentacin de Java. Mtodos

Java

Arrays y Cadenas

clase String en documentacin de Java. Mtodos

Java

Arrays y Cadenas

clase String en documentacin de Java. Mtodos

Java

Arrays y Cadenas

10

clase String en documentacin de Java. Mtodos

Java

Arrays y Cadenas

11

clase String en documentacin de Java. Mtodos

Java

Arrays y Cadenas

12

clase String en documentacin de Java. Mtodos

Java

Arrays y Cadenas

13

Comparacin de cadenas
Con equals() se sabe si dos cadenas son iguales
Con == se comparan referencias Se diferencia entre maysculas y minsculas

Con equalsIgnoreCase() no se diferencia entre maysculas y minsculas Con compareTo() se obtiene <0, 0, >0 segn el argumento sea menor, igual o mayor que la cadena Con toLowerCase() y con toUpperCase() se convierte una cadena a minculas o maysculas 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 carcter situado en la posicin ndice de la cadena


La primera posicin de una cadena, si existe, es la posicin 0

Tiene otros muchos mtodos de utilidad => consultar en laJava de Java Cadenas API Arrays y

15

El mtodo toString()
Sirve para convertir un objeto en un String. Sirve para convertir un tipo bsico a String. La clase Object define un mtodo toString(), por defecto, que retorna el nombre de la clase y la direccin 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

Mtodo toString
Conversin directa de un tipo bsico en cadena
Llamada a toString() para cualquier otro objeto

Todos los objetos tienen el mtodo toString() heredado de Object


Redefiniendolo se puede obtener una representacin como cadena del objeto (muy til en depuracin)

Java

Arrays y Cadenas

17

Mtodo toString
public class Punto { public class Punto { int x; int y; int x; int y; public Punto(int x, int y) { public Punto(int x, int y) { this.x = x; this.y = y; this.x = x; this.y = y; } } public String toString() { public String toString() { return Punto[ + x + , + y +]; return Punto[ + x + , + y +]; } } public static void main(String args[]) { public static void main(String args[]) { Punto punto = new Punto(2,3); Punto punto = new Punto(2,3); System.out.println( "visualizar datos System.out.println( "visualizar datos del punto+ punto );}} del punto+ punto );}}
Java Arrays y Cadenas 18

Ejercicio 1
Ejecutar el mtodo toString() heredado de Object en la clase Rectngulo

Java

Arrays y Cadenas

19

Ejercicio
Re escribir el mtodo toString() de Rectangulo

Java

Arrays y Cadenas

20

Conversin 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 bsicos de datos, como objetos.
Tipo de dato bsico boolean byte char short int long float double
Java

Clase e nvolve nte Boolean Byte Character Short Integer Long Float 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()

longValue()

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
Coleccin de variables todas del mismo tipo
Tamao fijo Pueden ser variables simples o referencias a objetos

Declaracin de variables array: dos alternativas


tipoValor [] variableArray; tipoValor variableArray [];

Array de tipos bsicos de datos


int vector[]; int [] vector; int vector[10]; en la declaracin
Java

// vector es un array de enteros // igual que la declaracin anterior // ERROR: no se especifica el tamao

Arrays y Cadenas

26

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

iArray

iArray[1] iArray[0] iArray[2]

Java

Arrays y Cadenas

27

Arrays
Definicin: reserva de la memoria para el array
Antes de usarse, un array tiene que crearse (con new):
int vector[] = new int[10]; vector[0]..vector[9] // array de 10 enteros:

En este momento se especifica el tamao 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

Declaracin 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
int [] array; // reserva de memoria array= new int[10];
array null array 0 1 2

arrayCadenas

9 null 0 null 1 null 2

null

Java

Arrays y Cadenas

31

Arrays de tipos simples y de objetos


Objetos
String [] arrayCadenas; // Definicin: reserva de memoria para las referencias a los objetos arraysCadenas = new String[10]; // iniacilizacin 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
Tamao de un array: miembro length int[] a=new int[100];
a.length // correcto a.length() // ERROR: no se usan parntesis for (int i = 0; i < a.length; i++) a[i]=i;

Comprobacin automtica de lmites del array


Si se intenta acceder fuera de los lmites del array (entre 0 y length-1), se produce la excepcin IndexOutOfBoundsException.
Java Arrays y Cadenas 33

Arrays
Se puede especificar una lista de inicializacin int[] arrayNumeros = { 147, 323, 89 }; No se utiliza el operador new y no se especifica el tamao 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
Declaracin, definicin e inicializacin
int[][] array; // creacin 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 tamao

Cada fila puede tener un tamao diferente


Si todas las filas tienen el mismo tamao
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
Inicializacin mediante listas
int[][] array = { {79, 87, 94, 82, 67}, {98, 87, 81, 74, 91} };

array

79 87 94 82 67
0,0 0,1 0,2 0,3 0,4

98 87 81 74 91
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 tamao 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
Lmites de los arrays
Todos los vectores empiezan por 0. El nmero 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\botn 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 lnea de comandos

Java

Arrays y Cadenas

41

Ejercicio 3: conjunto de Enteros


Define la clase ConjuntoDeEnteros para tratar con conjuntos de nmeros enteros comprendidos entre 0 y 100. Para representar estos conjuntos se usa un array de booleanos. Adems del constructor, la clase debe incluir los siguientes mtodos pblicos:
a. boolean pertenece(int e), que averigua si e pertenece al conjunto b. void aade(int e), que aade 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 unin 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 buzn de correos electrnicos ordenados segn el orden de llegada. Para representar el buzn se usa un array de correos electrnicos; 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 ledos o no. Define la clase Correo con los mtodos que creas convenientes, sabiendo que la clase Buzon debe incluir los siguientes mtodos pblicos: a. int numeroDeCorreos(), que calcula cuntos correos hay en el buzn b. void aade(Correo c), que aade c al buzon c. boolean porLeer(), que determina si quedan correos por leer d. String muestraPrimerNoLeido(), que muestra el primer correo no ledo e. String muestra(int k), que muestra el correo k-simo, se haya ledo 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: Buzn

Java

Arrays y Cadenas

47

Ejercicio: Buzn

Java

Arrays y Cadenas

48

Ejercicio 4: Probar Buzn

Java

Arrays y Cadenas

49

La clase Vector

Java

Arrays y Cadenas

50

API de una coleccin


Una coleccin (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 coleccin 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 mtodos para trabajar con vectores dinmicos de elementos de diferentes tipos.

Java

Arrays y Cadenas

53

clase Vector en documentacin de Java


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

Java

Arrays y Cadenas

54

clase Vector en documentacin 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 vaco public Vector (int initialCapacity) - construye un vector vaco de una determinada capacidad public Vector (int initialCapacity, int capacityIncrement) - Construye un vector vaco, con una capacidad determinada y un valor de capacityIncrement determinada

Java

Arrays y Cadenas

56

clase Vector en documentacin 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 tamao del incremento. Si es 0, cada vez que el buffer tenga que aumentar, el tamao se dobla. protected int elementCount - El nmero de elementos en el buffer. protected Object elementData [] - El buffer donde se almacenan los elementos.
Java Arrays y Cadenas 58

clase Vector en documentacin de Java. Mtodos

Java

Arrays y Cadenas

59

clase Vector en documentacin de Java. Mtodos

Java

Arrays y Cadenas

60

clase Vector en documentacin de Java. Mtodos

Java

Arrays y Cadenas

61

clase Vector en documentacin de Java. Mtodos

Java

Arrays y Cadenas

62

Mtodos de la clase Vector


public final int size () - Retorna el nmero de elementos en el vector. public final boolean contains (Object elem) Retorna true si el objeto especificado es un valor de la coleccin. public final int indexOf (Object elem) - Busca el objeto especificado desde la primera posicin y retorna un ndice (o -1 si el elemento no est). Utiliza el mtodo equals(), de modo que si el objeto no tiene sobrescrito el mtodo equals() de la clase Object, slo comparar los punteros, no los contenidos.
Java Arrays y Cadenas 63

Mtodos 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 excepcin: 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 excepcin: ArrayIndexOutOfBoundsExceptions.
Java Arrays y Cadenas 64

Mtodos de la clase Vector


public final synchronized void removeElementAt (int index) - Borra el elemento especificado por el ndice. Si el ndice no es vlido, lanza la excepcin: ArrayIndexOutOfBoundsExceptions. public final synchronized void addElement (Object obj) Aade el objeto que se le pasa, en la ltima posicin. public final synchronized void insertElementAt(Object obj, int index) - Inserta el objeto que se le pasa en la posicin que indica el ndice, pasando hacia arriba todos los elementos con un ndice igual o superior. Si el ndice es invlido, lanza la excepcin: 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" no dupes "File" Structure Hashtable Balanced Tree Resizable Array Linked List

data sequence

indexed

keyed

key sequence

Set
HashSet

SortedSet

List

Map
HashMap

SortedMap

TreeSet

TreeMap

ArrayList

LinkedList

Synchronized
Java

Arrays y Cadenas

Vector Stack

hashTable
70

Ejercicio 5: Buzn con Vector

Java

Arrays y Cadenas

71

Ejercicio 6: Buzn con LinkedList (depreca a Vector)

Java

Arrays y Cadenas

72

Ejercicio 6: Buzn con LinkedList

Java

Arrays y Cadenas

73

Ejercicio 6: Buzn con LinkedList

Java

Arrays y Cadenas

74

Ejercicio 6: Buzn con LinkedList

Java

Arrays y Cadenas

75

Ejercicio 6: Buzn 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 identificacin, y un entero para su saldo. La clase Cuenta debe disponer de los siguientes mtodos pblicos: a. Mtodos 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 estn representados mediante un array de objetos de la clase Cuenta. Esta clase debe incluir los siguientes mtodos pblicos: a. int numeroDeCuentas(), que calcula el nmero de cuentas del banco b. void aadeCuenta(String propietario, int saldo), que crea una nueva cuenta con los datos que se pasan por parmetro, y le asigna un nmero aleatorio como clave de identificacin y Cadenas Java Arrays 77

Ejercicio 7: Banco
c. void eliminaCuenta(int clave), que elimina la cuenta que tiene esta clave de identificacin d. int daSaldo(int clave), que devuelve el saldo de la cuenta dada por su clave de identificacin f. void ingresa(int clave, int k), que ingresa k euros en la cuenta dada por su clave de identificacin g. void reintegra(int clave, int k), que retira k euros de la cuenta dada por su clave de identificacin h. void imprimeCuenta(int clave), que imprime los datos de una clave dada por su clave de identificacin 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

You might also like