Contenido de certificación
Buscar
Social
Ofertas laborales ES

Entries in ocjp (13)

lunes
jul142014

Duda sobre ArrayList y Vector.

Duda sobre ArrayList y Vector.

Buenos dís. Pensaba que tanto Vector como ArrayList se diferenciaban en que sus métodos eran (o no eran) thread-safe. Salió el debate en mi trabajo, y quise comprobarlo por mi mismo. Desarrollé el siguiente código. ¿Alguien puede indicarme la salida del mismo e intentar explicar la diferencia real, en un ejemplo práctico, entre Vector y ArrayList? Muchas gracias

import java.util.ArrayList;
import java.util.List;

public class Principal implements Runnable {

	private List lista = new ArrayList();
	private static List hilos = new ArrayList();

	private int i = 0;

	private final int MAX_VAL = 1000;
	private final static int MAX_VAL_STATIC = 1000;
	private final static int MAX_HILOS = 1000;
	private final static int TIEMPO_ESPERA_MS = 1000;

	public Principal(List lista) {
		this.lista = lista;

	}

	public static void main(String[] args) throws InterruptedException {

		Long inicio = System.currentTimeMillis();
		
		List lista = new ArrayList();

		System.out.println("Iniciando hilos....");
		for (int i = 0; i < MAX_HILOS; i++) {
			Principal p = new Principal(lista);
			hilos.add(p);
		}

		System.out.println("OK");

		System.out.println("Ejecutando hilos....");
		for (Principal hilo : hilos) {
			hilo.run();
		}
		System.out.println("OK");

		System.out.println("Esperando finalización");

		boolean finalizado = true;
		do {
			Thread.sleep(TIEMPO_ESPERA_MS);

			for (Principal hilo : hilos) {
				if (hilo.i < MAX_VAL_STATIC) {
					finalizado = false;
				}
			}

		} while (!finalizado);

		System.out.println("OK");

		System.out.println("EL TAMAÑO DE LA LISTA ES: " + lista.size());
		Long total = System.currentTimeMillis() - inicio;
	}

	public int getI() {
		return i;
	}

	public void setI(int i) {
		this.i = i;
	}

	@Override
	public void run() {
		while (i < MAX_VAL) {
			lista.add("" + i);
			i++;
		}
	}

}

lunes
abr282014

Date-Time API (JAVA 8)

Java 8 presenta un cambio profundo con respecto al manejo de fechas, aquí dejamos unos ejercicios para medir el nivel de los que estén interesados.

DATE-TIME API

PREGUNTAS

1) ¿Qué clase utilizarías para almacenar tu cumpleaños en años, meses, días, segundos y nanosegundos?

2) Dada una fecha aleatoria, ¿cómo obtendrías el jueves pasado?

3) ¿Qué diferencia existe entre ZoneId y ZoneOffset?

4) ¿Cómo convertirías Instant a ZonedDateTime? ¿Cómo convertirías ZonedDateTime a Instant?

EJERCICIOS

1) Escribe un programa que, para un año dado, reporta el nº de días de cada mes dentro del año.

2) Escribe un programa que, para un mes del año actual, lista todos los lunes del mes.

3) Escribe un ejemplo que chequea si una fecha se corresponde a viernes 13.

lunes
abr072014

Más sobre GregorianCalendar....

¿Cuál es la siguiente salida y por qué?

Aclaraciones: se dispone de un equipo bastante potente a la hora de ejecución, y el día de ejecución es: 7 de Abril de 2014

NOTA: no vale hacer uso de IDE.
package es.orange.gateway.tools;

import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.GregorianCalendar;

public class Pruebas {

	/**
	 * @param args
	 */
	public static void main(String[] args) {

		GregorianCalendar gc1 = new GregorianCalendar();

		gc1.set(Calendar.MONTH, 4);

		try {
			Thread.sleep(10);
		} catch (InterruptedException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		GregorianCalendar gc2 = new GregorianCalendar();

		gc2.set(Calendar.MONTH, 4);

		System.out.println(gc2.compareTo(gc1));
		
		GregorianCalendar gc3 = new GregorianCalendar();

		gc3.set(Calendar.MONTH, 4);
		
		GregorianCalendar gc4 = new GregorianCalendar();

		gc4.set(Calendar.MONTH, 4);

		System.out.println(gc4.compareTo(gc3));
		
		GregorianCalendar gc5 = new GregorianCalendar();

		gc3.set(Calendar.MONTH, 4);
		
		GregorianCalendar gc6 = new GregorianCalendar();

		gc6.set(Calendar.MONTH, 16);

		System.out.println(gc5.compareTo(gc6));

		System.out.println(new SimpleDateFormat("dd/MM/yyyy").format(gc6.getTime()));

	}

}


lunes
may062013

Pregunta sobre excepciones

Tenemos dos códigos: se pide en cada uno de ellos, decir si compila, y en tal caso, comentar la salida en tiempo de ejecución (lo más detallada posible).
CÓDIGO 1
package scjp;
public class Pregunta {
private int a = 0;
private int b = 10;
private int c = b / a;
public Pregunta() {
System.out.println("Hola JavaHispaneros "+c);
}
public static void main(String args[]) {
Pregunta p = new Pregunta();
}
}

package scjp;
public class Pregunta {
private int a = 0; private int b = 10; private int c = b / a;
public Pregunta() { System.out.println("Hola JavaHispaneros "+c); }
public static void main(String args[]) { Pregunta p = new Pregunta();
}}

 

CÓDIGO 2

package scjp;

 

public class Pregunta {

 

private D d = new D();

 

public Pregunta() {

System.out.println("Por aquí estamos otra vez " + d);

}

 

public static void main(String args[]) {

Pregunta p = new Pregunta();

 

}

 

class D {

 

D() throws PersonalException {

throw new PersonalException();

}

 

}

 

class PersonalException extends Exception {

 

}

}

 

lunes
abr152013

Más sobre Java 7

A continuación, comentamos las modificaciones principales que presenta Java 7 con respecto a Java 6. Un saludo, Jaime.

Click to read more ...

martes
abr092013

Pregunta sobre switch

Hola a todos,

¿Podéis argumentar cuál sería la salida en consola después de ejecutar el siguiente programa?

 

package javahispano;

public class EjemplosSwitch {

    public static void main(String args[]) {
        String jugador = "Cristiano Ronaldo";

        switch (jugador) {
        case "Cristiano Ronaldo":
            System.out.println("Real Madrid CF");
        case "Leo Messi":
            System.out.println("FC Barcelona");
        }
    }
}

Un saludo,

    Jaime.

martes
ago282012

Un artículo interesante sobre colecciones

A continuación, comentamos un enlace de IBM relacionado con colecciones en Java, donde se dan consejos y puntos de vista a los desarrolladores.

Click to read more ...

lunes
may212012

Orientación a Objetos (Object Orientation) III - Casting de variables de referencia

El uso de polimorfismo es una muy buena práctica de desarrollo para reutilizar funcionalidad, hacer el código escalable y entre otras cosas aprovechar las características de la programación orientada a objetos; pero a su vez nos lleva a hacer uso del Casting (cuando la ocasión lo amerita), lo que consiste en convertir de un tipo de objeto a otro.

Click to read more ...

martes
abr172012

Nuevo Seminario de Preparación para Java SE 6 Programmer

El mes anterior, Oracle anunciaba nuevos productos en su cartera de Oracle University, publicados como "Seminarios de preparación para exámenes de certificación"; se incluyeron inicialmente seminarios para administradores de base de datos y otras herramientas; pero recientemente se ha anunciado el primer seminario correspondiente a la plataforma Java y comienzan con la certificación Java SE 6 Programmer

Click to read more ...

viernes
nov112011

Orientación a Objetos (Object Orientation) II - Sobrescritura de métodos

Overriding (Sobrescritura de métodos) Cuando haces uso de herencia tienes la posibilidad de sobrescribir los métodos de la clase padre (si y solo si no están marcados como final); el uso de la sobrescritura es definir un comportamiento particular de un método en una subclase.

Click to read more ...