You are on page 1of 7

ArrayList.

Programas manejan datos inciertos. Un ArrayList acomoda elementos


adicionales, ms de lo que podra anticipar. Esta capacidad es til.
Esta clase funciona de manera eficiente, cambiar el tamao interno, hace
que muchos programas ms simple. En Java se puede especificar el tipo de
elementos (una clase). Nos inicializamos con datos.

ArrayList<Integer> elements = new ArrayList<>();


// Add three elements.
elements.add(10);
elements.add(15);
elements.add(20);

ArrayList < Estudiante > estudiantes = ...;


Estudiante estudiante = estudiantes . Obtener ( 0 );

la razn de que es el <Estudiantes> junto a ArrayList se debe a que es necesario


especificar qu tipo de datos de la ArrayList llevar a cabo. en este caso, la
persona est diciendo java que quieren un ArrayList que contiene el tipo de datos
de clase Estudiantes

public java.net.URL
public java.net.URL myServer = null;
URL clase representa un localizador de recursos uniforme,
un puntero a un "recurso" en la World Wide Web. Un recurso
puede ser algo tan simple como un archivo o un directorio,
o puede ser una referencia a un objeto ms complicado, como
una consulta a una base de datos o de un motor de bsqueda.
Ms informacin sobre los tipos de URL y sus formatos se
puede encontrar en:

En general, un URL se puede dividir en varias partes. El


ejemplo anterior de una URL indica que el protocolo a

utilizar es http (protocolo de transferencia de hipertexto)


y que la informacin reside en una mquina host que se
llama www.ncsa.uiuc.edu. La informacin sobre ese equipo
host es el nombre demoweb / url-primer.html. El significado
exacto de este nombre en el ordenador central es a la vez
depende del protocolo y de acogida dependiente. La
informacin reside normalmente en un archivo, pero podra
ser generado sobre la marcha. Este componente de la URL se
llama el componente de archivos, aunque la informacin no
est necesariamente en un archivo.

Un URL puede especificar un "puerto", que es el nmero de


puerto al que se realiza la conexin TCP en la mquina host
remoto. Si no se especifica el puerto, el puerto por
defecto para el protocolo se utiliza en su lugar. Por
ejemplo, el puerto por defecto para HTTP es 80. Un puerto
alternativo podra especificarse como:

java.net.URLConnection
public java.net.URLConnection myConx = null;

La clase abstracta URLConnection es la superclase de todas las


clases que representan un enlace de comunicaciones entre la
aplicacin y una URL. Las instancias de esta clase se pueden
utilizar tanto para leer y escribir en el recurso de la URL hace
referencia. En general, la creacin de una conexin a un URL
es un proceso de mltiples pasos:
El objeto de conexin se crea invocando el mtodo
openConnection en una direccin URL.
Los parmetros de configuracin y las propiedades de la
solicitud en general son manipulados.
La conexin real al objeto remoto se realiza, utilizando el
mtodo de conexin.

El objeto remoto est disponible. Los campos de cabecera y


el contenido del objeto remoto se puede acceder.

RUN()
El metodo run() es similar al main(), pero para
// threads. Cuando run() termina el thread muere
public void run() {
// Retasamos la ejecucin el tiempo especificado
try {
sleep( retardo );
} catch( InterruptedException e ) {
;
}

Una clase TimerTask. Dicha clase tiene un mtodo run() (Puesto


que TimerTask es una clase abstracta, debemos hacer una clase hija de ella e
implementar el mtodorun()) y que es al que se llamar cada cierto tiempo. Ah
debemos poner nuestro cdigo.

Usaremos la versin del mtodo en el que el segundo parmetro es un long, que


es a partir de cuntos milisegundos queremos que empiece a avisarnos. Si
ponemos cero, empezar a avisarnos inmediatamente.

Como tercer parmetro lleva otro long, que es cada cuntos milisegundos
queremos recibir el aviso.

//Claseenlaqueestelcdigoaejecutar
TimerTasktimerTask=newTimerTask()
{
publicvoidrun()
{
//Aquelcdigoquequeremosejecutar.
}
};
....
//Aquseponeenmarchaeltimercadasegundo.
Timertimer=newTimer();
//Dentrode0milisegundosavsamecada1000milisegundos
timer.scheduleAtFixedRate(timerTask,0,1000);

TIMERYTIMERTASK

package comunes;
import java.io.IOException;
import java.util.Timer;
import java.util.TimerTask;
public class Reloj {
Timer timer = new Timer(); // El timer que se encarga de administrar
los tiempo de repeticion
public int segundos; // manejar el valor del contador
public boolean frozen; // manejar el estado del contador TIMER
AUTOMATICO -- True Detenido | False Corriendo
// clase interna que representa una tarea, se puede crear varias
tareas y asignarle al timer luego
class MiTarea extends TimerTask {
public void run() {
segundos++;
System.out.println(segundos);
// aqui se puede escribir el codigo de la tarea que
necesitamos ejecutar
}// end run()
}// end SincronizacionAutomatica
public void Start(int pSeg) throws Exception {
frozen = false;
// le asignamos una tarea al timer
timer.schedule(new MiTarea(), 0, pSeg * 1000 * 60);
}// end Start
public void Stop() {
System.out.println("Stop");
frozen = true;
}// end Stop
public void Reset() {
System.out.println("Reset");
frozen = true;
segundos = 0;
}// end Reset
}// end Reloj

long startTime = System.currentTimeMillis();


System.currentTimeMillis() te devuelve el nmero de milisegundos
desde el 1 de Enero de 1970, es decir, un nmero enorme, como el
que te est saliendo.
Si quieres ver cunto tarda un proceso, debes llamar a este mtodo
dos veces y hacer una resta
long t1 = System.currentTimeMillis();

// aqu el proceso que quieres medir cuanto tarda


long t2 = System.currentTimeMillis();
System.out.println ("Ha tardado " + (t2-t1) + "milisegundos");

LONG
"Long" en Java as como en otros lenguajes, es un tipo de dato, como sabes cuando declaras
una variable, sta debe tener un tipo, ste puede ser: "char" para caracter, "double" para
decimal, "String" para cadena, "boolean" para lgico, "int" para entero bien "long" para
enteros ms grandes.
Int y long son datos de tipo entero, "int" para enteros de 32 bits y "long" para enteros de 64 bits,
cuyos rangos son los siguientes:
Tipo: int

Intervalo: -2,147,483,648 hasta 2,147,483,647

Tipo: long

Intervalo: -9,223,372,036,854,775,808 hasta 9,223,372,036,854,775,807

Ejemplo en Java:
int dato1 = 2,147,483,647;
long dato2 = 9,223,372,036,854,775,807;
*Si dato2 fuera del tipo "int" no le podras asignar un nmero mayor a 2,147,483,647.

Resumiendo: Si la variable que usars manejar nmeros que no superen los 2,147,483,647
debe o puede ser declarada de tipo "int", pero si necesitas trabajar con nmeros que superan
ese rango debes usar el tipo "long".

Timertask:
1 import java.util.Timer;
2 import java.util.TimerTask;
3
4 class MyTimerTask extends TimerTask
5{
6

private int tic=0;

private Timer timer;

8
9

public MyTimerTask(Timer t)

this.timer = t;

1
1
2
1
3
1
4
1
5

public void run()

System.out.println((tic++%2==0)?"TIC":"TOC");

if (tic%10==0)

System.out.println("Cancelling task");

this.cancel();

this.timer.schedule(new MyTimerTask(this.timer), 1000, 1000);

2
0
2

}
}

1
2
2
2
3
2
4

TIMER:
La salida de este programa ser un TIC / TOC alternativamente cada segundo por la
consola, ya que la tarea la programamos cada 1000ms. Es extremadamente fcil, en
principio tenemos que crear un objeto TimerTask que defina la tarea que vamos a ejecutar
dentro de su mtodo run() (el cul tenemos que invalidar por uno nuestro (con @Override).
Luego cargaremos un Timer, y con su mtodo schedule llamaremos a la tarea, indicndole
el tiempo que debe esperar para empezar y el tiempo tras el cul repetir la tarea de forma
indefinida.
Si slo indicamos un argument, la tarea se ejecutar una sola vez dentro de N
milisegundos. Tambin se pueden especificar objectos de tipo Date por argumentos.

Por otro lado, cabe mencionar que junto con schedule() tenemos otro mtodo,
scheduleAtFixedRate, la diferencia es que si ocurren retrasos en la ejecucin de las tareas,
por ejemplo, que est nuestra aplicacin haciendo otras cosas y en lugar de 1000ms, en
una de las ejecuciones se tarden 1500, la tarea se ejecutar a los 500ms para compensar.
Si el retraso es ms grande, se ejecutar varias veces hasta recuperar el ritmo. schedule(),
si se retrasa no har nada, dentro de 1000ms volver a ejecutar de nuevo la tarea.
Hemos visto que el TimerTask lo he creado de forma implcita, para un ejemplo, o para
algo sencillo lo podemos hacer sin miedo. Si ya tenemos una tarea ms grande y
compleja, lo suyo sera crear una clase que extienda TimerTask para esa tarea, pero eso
ya lo veremos ms adelante.
Algo interesante que podemos hacer es llamar a una variable externa, es decir, desde
nuestro TimerTask, llamar a un atributo de TimerEx, aunque no tiene nada que ver con
cmo se hacen los Timers es algo curioso, que a lo mejor produce un pequeo
calentamiento de cabeza.
Y es que a lo mejor queremos acceder a ese atributo, es decir, utilizar algo que est fuera
del TimerTask

timer.schedule(new RemindTask(),
0,
//initial delay
1*1000); //subsequent rate

Timer.schedule(aqu va el nombre de la clase hija


de timertask, retraso inicial,aqu va el tiempo que
repetir la tarea de forma indefinida)

You might also like