Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Object
n n n n
toString() de Object
El método toString() de Object es llamado cada ves que se quiera
obtener la descripción en String de un objeto y debe ser sobre escrito
en consecuencia en aquellas clases que necesitan ser descriptas
Por ejemplo cuando pasamos la referencia de un objeto a
System.out.print() por ejemplo
public
publicclass
classHardToRead
HardToRead{ {
public
publicstatic
staticvoid
voidmain
main(String
(String[][]args)
args){ {
HardToRead
HardToReadhh==new newHardToRead();
HardToRead();
System.out.println(h);
System.out.println(h);
}}
}}
%%java
javaHardToRead
HardToRead
HardToRead@a47e0
HardToRead@a47e0////por
pordefecto
defectoelelmétodo
métodotoString()
toString()devuelve
devuelve un
unString
Stringconteniendo
conteniendo
//el
//el nombre de la clase mas @ mas un códigohash
nombre de la clase mas @ mas un código hash
de la clase
de la clase
////utilizado
utilizadopor
porlas
lascolecciones
colecciones
toString() sobre escritura
public
publicclass
classBobTest
BobTest{ {
public
publicstatic
staticvoid
voidmain
main(String[]
(String[]args)
args){ {
Bob
Bobf f==new
newBob("GoBobGo",
Bob("GoBobGo",19); 19);
System.out.println(f);
System.out.println(f);
}}
}}
class
classBob
Bob{ {
int
intshoeSize;
shoeSize;
String
StringnickName;
nickName;
Bob(String
Bob(StringnickName,
nickName,int
intshoeSize)
shoeSize){ {
this.shoeSize
this.shoeSize==shoeSize;
shoeSize;
this.nickName = nickName;
this.nickName = nickName;
}}
public
publicString
StringtoString()
toString(){ {
return
return("I("Iam
amaaBob,
Bob,but
butyouyoucan
cancall
callme
me" "++nickName
nickName++
".".MyMyshoe
shoesize
sizeisis" "++shoeSize);
shoeSize);
}}
}}
El metodo equals()
}}
public
publicint
inthashCode()
hashCode(){ {return
return(x(x* *17);
17);} }
}}
Reglas para hashCode()
Colecciones
Colecciones
Las interfaces de las colecciones encapsulan
los diferentes tipos de colecciones.Son las
siguientes.
Collection: es la interfaz raíz en la jerarquía, representa un conjunto de objetos
llamados elementos de esta.
Set : es una colección de elementos que no tiene elementos duplicados
List : es una colección ordenada de elementos por un índice , puede contener
elementos duplicados.
Queue : representa una estructura de cola o tipo FIFO.
Map : es un objeto que mapea un clave con un valor , no se pueden tener claves
duplicadas.
SortedSet : es un Set ordenado en forma ascendente.
SortedMap : es un Map ordenado por sus claves en forma ascendente.
Colecciones
out
In
Usando el FrameWork Collections
java.util.*
ArrayList
List
ListmyList
myList==new
newArrayList();
ArrayList();
////En
Enjava
java55se
sepuede
puedeescribir
escribirde
delalasiguiente
siguienteforma
forma
List<String>
List<String>myList
myList==new
newArrayList<String>();
ArrayList<String>();
import
importjava.util.*;
java.util.*;
public
public classTestArrayList
class TestArrayList{ {
public
publicstatic
staticvoid
voidmain(String[]
main(String[]args)
args){ {
List<String>
List<String>test
test==new
newArrayList<String>();
ArrayList<String>();
String s = "hi";
String s = "hi";
test.add("string");
test.add("string");
test.add(s);
test.add(s);
test.add(s+s);
test.add(s+s);
System.out.println(test.size());
System.out.println(test.size());
System.out.println(test.contains(42));
System.out.println(test.contains(42));
System.out.println(test.contains("hihi"));
System.out.println(test.contains("hihi"));
test.remove("hi");
test.remove("hi");
System.out.println(test.size());
System.out.println(test.size());
}}
}}
Autoboxing en Colecciones
Antes de java 5 uno tenia que encapsular si o si
un tipo de dato primitivo para utilizarlo en una
colección , a partir de java 5 ya no es necesario
debido al autoboxing.
List
ListmyInts
myInts==new
newArrayList();
ArrayList();////pre
preJava
Java55declaración
declaración
myInts.add(new
myInts.add(newInteger(42));
Integer(42)); ////tenemos
tenemosque
queencapsular
encapsularint
int
////en
enjava
java55nosotros
nosotrosdecimos
decimosesto
esto
myInts.add(42);
myInts.add(42); ////autoboxing
autoboxingmanipula
manipulaesto
esto
Ordenando Colecciones
//Resultados
//Resultados
size
size44
idx2
idx2three
three
one
one fivethree
five threesix
six
sl[1] five
sl[1] five
Usando List
List<Integer>
List<Integer>myList
myList==new
newArrayList<Integer>();
ArrayList<Integer>();////nuevo
nuevoestilo
estilo
//esto
//estoes
escomo
comose
sepuede
puededeclarar
declararuna
unacolección
colecciónen
enjavajava55
import
importjava.util.*;
java.util.*;
class
class Parent{ {} }
Parent
class
classChild
Childextends
extendsParent
Parent{ {} }
public
publicclass
classTestPoly
TestPoly{ {
public
publicstatic
staticvoid
voidmain(String[]
main(String[]args)
args){ {
Parent[]
Parent[]myArray
myArray==new
newChild[3];
Child[3];//Es
//Escorrecto
correctocon
conarreglos
arreglospero
perono
nocon
conGenerics
Generics
}}
}}
En los arreglos existe una excepción llamada ArrayStoreException en el caso de poner
un objeto no adecuado al arreglo.
En los generics no existe tal cosa por lo que el compilador no permite que se les asigne
una lista de subtipos
Polimorfismo Generics
public
publicvoid
voidfoo()
foo(){ {
Cat[]
Cat[]cats
cats=={new
{newCat(),
Cat(),new
newCat()};
Cat()};
addAnimal(cats);
addAnimal(cats); // no hay problemascon
// no hay problemas conlos
losarreglos
arreglos
}}
public
publicvoid
voidaddAnimal(Animal[]
addAnimal(Animal[]animals)
animals){ {
animals[0]
animals[0]==new
newDog();
Dog();////Error
Errorestoy
estoyponiendo
poniendoun
unDog
Dogen
enun
unarreglo
arreglode
deCat
Cat
}}
public
publicvoid
voidaddAnimal(List<Animal>
addAnimal(List<Animal>animals)
animals){ {
animals.add(new
animals.add(newDog());
Dog());////esto
estoes
eslegal
legal
}}
public
publicstatic
staticvoid
voidmain(String[]
main(String[]args)
args){ {
List<Animal>
List<Animal>animals
animals==new
newArrayList<Animal>();
ArrayList<Animal>();
animals.add(new Dog());
animals.add(new Dog());
animals.add(new
animals.add(newDog());
Dog());
AnimalDoctorGeneric
AnimalDoctorGenericdoc doc==new
newAnimalDoctorGeneric();
AnimalDoctorGeneric();
doc.addAnimal(animals);
doc.addAnimal(animals); //Ok estoesta
//Ok esto estabien
bien
}}
Polimorfismo Generics
public
publicvoid
voidfoo(List<Object>
foo(List<Object>list)
list){ {} }
import
importjava.util.*;
java.util.*;
public
public classTestWildcards
class TestWildcards{ {
public
publicstatic
staticvoid
voidmain(String[]
main(String[]args) args){ {
List<Integer>
List<Integer>myList
myList==new newArrayList<Integer>();
ArrayList<Integer>();
Bar bar = new Bar();
Bar bar = new Bar();
bar.doInsert(myList);
bar.doInsert(myList);
}}
}}
class
classBar Bar{ {
void
voiddoInsert(List<?>
doInsert(List<?>list)list){ {
list.add(new
list.add(newDog());
Dog());////error
errorelel<?>
<?>nonomemedeja
dejautilizar
utilizarelelmetodo
metodoadd
addde
delalalista
lista
}}
}}
Declaracion de Generics
//declaransion
//declaransiongenerics
genericsde
delalainterface
interfaceList
List
public
publicinterface
interfaceList<E>
List<E>
public
publicTTgetRental()
getRental(){ { ////we
werent
rentout
outaaTT
////blocks
blocksuntil
untilthere's
there'ssomething
somethingavailable
available
return rentalPool.get(0);
return rentalPool.get(0);
}}
public
publicvoid
voidreturnRental(T
returnRental(TreturnedThing)
returnedThing){ {////and
andthe
therenter
renter
////returns a
returns a TT
rentalPool.add(returnedThing);
rentalPool.add(returnedThing);
}}
}}