Documentos de Académico
Documentos de Profesional
Documentos de Cultura
a objetos
Teoría
Libros recomendados certificaciones
o Portadas
Portada_OCA_JavaSE8_Study_Guide.pdf
Portada - OCA_OCP_JavaSE8_Practice_Tests.pdf
Animal.java
package hoy_prueba5;
/**
*
* @author javilukt
*/
public class Animal {
@Override
public String toString(){
return "Soy una instancia de animal";
}
}
ClaseConAnimal.java
package hoy_prueba5;
/**
*
* @author javilukt
*/
public class ClaseConAnimal {
Animal a;
@Override
public String toString(){
return "Soy una instancia de clase con campo animal";
}
}
ClaseConCosa.java
package hoy_prueba5;
/**
*
* @author javilukt
*/
public class ClaseConCosa {
Cosa c;
@Override
public String toString(){
return "Soy una instancia de clase con campo cosa";
}
}
ClaseConPersona.java
package hoy_prueba5;
/**
*
* @author javilukt
*/
public class ClaseConPersona {
Persona p;
@Override
public String toString(){
return "Soy una instancia de clase con campo persona";
}
}
ClaseGenerica.java
/*
* Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-
default.txt to change this license
* Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to
edit this template
*/
package hoy_prueba5;
/**
*
* @author javilukt
* @param <T>
*/
public class ClaseGenerica<T> {
T t;
ClaseGenerica(T t) {
this.t = t;
}
T getT() {
return t;
}
@Override
public String toString(){
return "Soy una instancia de " + getClass().getSimpleName() + " con
campo "
+ t.getClass().getSimpleName();
}
}
Cosa.java
package hoy_prueba5;
/**
*
* @author javilukt
*/
public class Cosa {
@Override
public String toString(){
return "Soy una instancia de cosa";
}
Persona.java
package hoy_prueba5;
/**
*
* @author javilukt
*/
public class Persona {
@Override
public String toString(){
return "Soy una instancia de persona";
}
}
Test.java
package hoy_prueba5;
/**
*
* @author javilukt
*/
public class Test {
o Generic Class
class A<T> {
private T a;
public A(T a) {this.a = a;}
public T getInfo() {return a;}
public void putInfo(T a) {this.a = a;}
}
</aside>
</aside>
</aside>
o Basics
Elementos permitidos:
ArrayList
l.size(); // tamaño
Array
// 3 formas equivalentes
String[] a = new String[2];
a[0] = "uno"; a[1] = "dos";
a.length; // tamaño
Array ←→ ArrayList
</aside>
Array
</aside>
Wrapper Classes
Autoboxing - Unboxing
Mucho cuidado
// distinguir
l.remove(1); // borra el elemento de indice 1
l.remove(new Integer(3);); // borra primera coincidencia de
objeto
</aside>
</aside>
</aside>
void clear():
Vacía la Collection
</aside>
</aside>
Lo más práctico
</aside>
</aside>
HashSet, utiliza una hashTable, es decir, una tabla con hashCode. Así:
1. Add and Check si está: tiempo constante.
2. Orden: no existe.
3. Es el más común.
</aside>
</aside>
</aside>
</aside>
</aside>
<aside> 🔵 Orden:
1. Números
2. Letras mayúsculas
3. Letras minúsculas
Mucho cuidado:
interfaz Comparable: define el orden por defecto entre objetos de una
clase mediante el método de instancia int compareTo(MyClass A)
clase Comparator: permite usar un orden especial entre objetos ya sea
por:
1. Por no tener implementado Comparable.
2. Por necesitar alterar el orden de Comparable. </aside>
<aside> 🔵 Comparable
6. return 0: igualdad
7. return negativo: si current object menor que argumento.
8. return positivo: si current object mayor que argumento.
9. La clase
10. import java.util.*;
11. class A implements Comparable<A>{
12. private String s;
13. public A(String s){this.s = s;}
14. public String toString(){return s;}
15. public int compareTo(A a){
16. return s.compareTo(a.s);
17. }
18. // public static ... verlo abajo
19. }
20. Usando la clase y el orden
21. public static void main(String[] args){
22. List<A> l = new ArrayList<<();
23. l.add(new A("hola"));
24. l.add(new A("adios"));
25. Collections.sort(l);
26. System.out.print(l); // adios hola
27. }
</aside>
import java.util.*;
class LegacyA implements Comparable{
private String s;
public int compareTo(Object o){
LagacyA a = (LegacyA)o;
return s.compareTo(a.s);
}
}
</aside>
</aside>
<aside> 🔵 Comparator
28. La clase
29. import java.util.*;
30. class A implements Comparable<A>{
31. private String s;
32. private int i;
33. public A(String s, int ){this.s = s; this.i
= i;}
34. public String toString(){return s;}
35. public int compareTo(A a){
36. return s.compareTo(a.s);
37. }
38. // public static ... verlo abajo
39. }
40. Usando la clase y el orden
41. public static void main(String[] args){
42. Comparator<A> byI = new Comparator<A>() {
43.
public int compare(A a1, A a2) {
44.
return a1.i - a2.i;
45.
}
46. }; // no olvidar el ;
47. List<A> l = new ArrayList<<();
48. l.add(new A("hola", 1));
49. l.add(new A("adios", 2));
50. Collections.sort(l);
51. System.out.print(l); // adios hola
52. Collections.sort(l, byI);
53. System.out.print(l); // hola adios
54. }
55. Otra forma de escribir el comparator
56. Comparator<A> byI = (a1, a2) -> a1.i - a2.i;
57. Comparator<A> byI = (A a1, A a2) -> a1.i - a2.i;
58. Comparator<A> byI = (a1, a2) -> {return a1.i -
a2.i;};
59. Comparator<A> byI = (A a1, A a2) -> {return a1.i -
a2.i;};
60.
61. Típica trampa de examen: nombre de método cambiado
62. Comparator<A> byI = new Comparator<A>() {
63.
public int **compareTo**(A a1, A a2) {
64.
return d1.i - d2.i;
65.
}
66. };
</aside>
</aside>
<aside> 🔵 Resumen
</aside>
import java.util.*;
public class SortA {
static class A{int id;}
public static void main(String... args) {
List<A> lA = new ArrayList<>();
lA.add(new A());
Collections.sort(lA); // no compila
// A no comparable
}
}
</aside>
<aside> 🔵 Ejemplos
import java.util.*;
List<String> l = Arrays.asList("Adios", "Hola");
Comparator<String> c = Comparator.reverseOrder();
Collections.binarySearch(l, "Hola", c); // salida impredecible
</aside>
Teoría Exceptions
Stream
<aside> 🔵 ¿Qué es?
</aside>
<aside> 🔵 Operaciones
4. intermedias
1. map → trasnforma los elementos del Stream
2. filter → filtra los elementos del Stream.
3. distinct → filtro especial para dejar solo elementos únicos.
4. sorted → ordena los elementos del Stream.
5. peek → obtiene los elementos del Stream, para hacer algo con ellos
pero sin alterarlo.
6. limit → limita el número de elementos del Stream a un número
determinado.
5. terminales:
1. reduce → para acumular elementos
2. collect → para generar list, set o map
3. forEach → hacer algo con cada elemento
6. Se utilizan para transformar conjuntos de datos </aside>
<aside> 🔵 Ejemplos
</aside>
DateTimeJava
Test.java
package localdatetime;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.LocalTime;
import java.time.Month;
import java.time.Period;
import java.time.ZonedDateTime;
import java.time.format.DateTimeFormatter;
import java.time.format.FormatStyle;
import java.util.TimeZone;
/**
*
* @author javilukt
*/
public class Test {
dtf1.format(dt1);