<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>Jose Manuel Prieto Palacios</title>
	<atom:link href="http://prietopa.wordpress.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://prietopa.wordpress.com</link>
	<description>Computer Science Engineer</description>
	<lastBuildDate>Fri, 23 Dec 2011 12:48:04 +0000</lastBuildDate>
	<language>es</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='prietopa.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://s2.wp.com/i/buttonw-com.png</url>
		<title>Jose Manuel Prieto Palacios</title>
		<link>http://prietopa.wordpress.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://prietopa.wordpress.com/osd.xml" title="Jose Manuel Prieto Palacios" />
	<atom:link rel='hub' href='http://prietopa.wordpress.com/?pushpress=hub'/>
		<item>
		<title>antipatron getter and setter</title>
		<link>http://prietopa.wordpress.com/2011/12/23/antipatron-getter-and-setter/</link>
		<comments>http://prietopa.wordpress.com/2011/12/23/antipatron-getter-and-setter/#comments</comments>
		<pubDate>Fri, 23 Dec 2011 12:47:45 +0000</pubDate>
		<dc:creator>Jose Manuel Prieto</dc:creator>
				<category><![CDATA[patrones]]></category>

		<guid isPermaLink="false">http://prietopa.wordpress.com/?p=257</guid>
		<description><![CDATA[creo que es esto ¿o estoy equivocado?<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=prietopa.wordpress.com&amp;blog=6212784&amp;post=257&amp;subd=prietopa&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>creo que es esto ¿o estoy equivocado?</p>
<p><pre class="brush: plain;">
package net.josemanuel.prietopalacios.antipatrones

public class Calculadora {

	double operador1;
	double operador2;

	public Calculadora() {

	}

	public Calculadora operador1(double ope1) {
		this.operador1 = ope1;
		return this;
	}

	public Calculadora operador2(double ope2) {
		this.operador2 = ope2;
		return this;
	}

	public double operacion(String operacion) {
		if (&quot;+&quot;.equals(operacion)) {
			return operador1 + operador2;
		} else if (&quot;-&quot;.equals(operacion)) {
			return operador1 - operador2;
		} else if (&quot;*&quot;.equals(operacion)) {
			return operador1 * operador2;
		} else if (&quot;/&quot;.equals(operacion)) {
			return operador1 / operador2;
		}
		return 0;
	}

	public static void main(String[] args) {
		double d = new Calculadora()
					.operador1(1)
					.operador2(1)
					.operacion(&quot;+&quot;);
		System.out.println(d);
	}

}
</pre></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/prietopa.wordpress.com/257/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/prietopa.wordpress.com/257/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/prietopa.wordpress.com/257/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/prietopa.wordpress.com/257/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/prietopa.wordpress.com/257/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/prietopa.wordpress.com/257/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/prietopa.wordpress.com/257/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/prietopa.wordpress.com/257/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/prietopa.wordpress.com/257/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/prietopa.wordpress.com/257/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/prietopa.wordpress.com/257/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/prietopa.wordpress.com/257/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/prietopa.wordpress.com/257/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/prietopa.wordpress.com/257/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=prietopa.wordpress.com&amp;blog=6212784&amp;post=257&amp;subd=prietopa&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://prietopa.wordpress.com/2011/12/23/antipatron-getter-and-setter/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/5c51da68f3f1b191f8fe57cb4ed06186?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">prietopa</media:title>
		</media:content>
	</item>
		<item>
		<title>Integracion Continua (parte I)</title>
		<link>http://prietopa.wordpress.com/2011/10/16/integracion-continua-parte-i/</link>
		<comments>http://prietopa.wordpress.com/2011/10/16/integracion-continua-parte-i/#comments</comments>
		<pubDate>Sun, 16 Oct 2011 12:15:02 +0000</pubDate>
		<dc:creator>Jose Manuel Prieto</dc:creator>
				<category><![CDATA[Contenedor]]></category>

		<guid isPermaLink="false">http://prietopa.wordpress.com/2011/10/16/integracion-continua-parte-i/</guid>
		<description><![CDATA[Quisiera poner aqui parte de mi autoaprendizaje sobre la inquietud de cómo hacer Integración Continua. Pero no es el principal objetivo, sino aprender a utilizar todas las herramientas de integración continua (maven, junit, Programacion Orientada a Objetos, Spring, Jenkis&#8230;) para desarrollar módulos independientes y fusionarlos en proyectos. La principal idea de estos post es hacer [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=prietopa.wordpress.com&amp;blog=6212784&amp;post=254&amp;subd=prietopa&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Quisiera poner aqui parte de mi autoaprendizaje sobre la inquietud de cómo hacer Integración Continua. Pero no es el principal objetivo, sino aprender a utilizar todas las herramientas de integración continua (maven, junit, Programacion Orientada a Objetos, Spring, Jenkis&#8230;) para desarrollar módulos independientes y fusionarlos en proyectos. La principal idea de estos post es hacer un How To. Lo publico en internet para si, me equivoco en algo, me lo digas y asi poder rectificar y aprenderlo bien. Esta es la complejidad de ser autodidacta. Empezemos.</p>
<p>Disponemos de dos módulos realizados con maven: modulo_mail y modulo_socket. Estos módulos tienen su interfaz, su código ya implementado, sus test unitarios y su pom (gestiona las dependencias, compila, genera las fuentes, el javadoc y ejecuta los test).</p>
<p>Ahora nos han indicado que tenemos que realizar un nuevo proyecto: tenemos que hacer un socket que escuche en un puerto, en el que lo que se le mande, lo envía por correo.</p>
<p>De acuerdo, manos a la obra. Tenemos prácticamente todo hecho. Tenemos quien nos construya el socket, y quien nos envie los emails, solo necesitamos algo que lo integre todo y realice la funcionalidad que nos han indicado.</p>
<p>Tenemos dos maneras de actuar:<br />
a) tratando estos módulos como independientes. Es decir, añadirlos como una dependencia en el pom.<br />
b) tratando los módulos como algo vivo de lo que queremos hacer. Es decir, queremos añadir una nueva funcionalidad al modulo_mail: envio de adjuntos, y otra al modulo_socket: conexión SSL.</p>
<p>Tenemos que tener en cuenta que si estos módulos son utilizados por otros proyectos, cualquier cambio que hagamos en ellos puede alterar estos otros proyectos. Aunque bueno, para eso están las versiones. Pero para ello habría que tener un buen control de qué contiene cada versión.</p>
<p>Pero bueno, supongamos que queremos la opción b), para hacer un desarrollo conjunto. Bueno, para que no se nos vaya de las manos, necesitamos la Integracion Continua. Necesitamos que algo vaya a nuestros repositorio de código y cada vez que subimos algo, lo compile, realice los test y lo integre con todos los demás proyectos. De esta manera ese algo nos facilita bastante el saber si cualquier cambio que realicemos afecta a otros proyectos o no.</p>
<p>No voy a explicar como hacer funcionar un servidor de integración continua. Pero si como vamos a hacer este nuevo proyecto. Sigamos integrando las partes.</p>
<p>Repasemos, tenemos dos módulos, con sus pom, sus test y su código. Necesitamos integrarlos, haciendo un nuevo modulo.</p>
<p>(Continuara&#8230; pendiente de revision, publicar imagenes y de que pongas algun comentario)</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/prietopa.wordpress.com/254/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/prietopa.wordpress.com/254/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/prietopa.wordpress.com/254/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/prietopa.wordpress.com/254/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/prietopa.wordpress.com/254/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/prietopa.wordpress.com/254/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/prietopa.wordpress.com/254/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/prietopa.wordpress.com/254/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/prietopa.wordpress.com/254/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/prietopa.wordpress.com/254/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/prietopa.wordpress.com/254/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/prietopa.wordpress.com/254/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/prietopa.wordpress.com/254/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/prietopa.wordpress.com/254/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=prietopa.wordpress.com&amp;blog=6212784&amp;post=254&amp;subd=prietopa&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://prietopa.wordpress.com/2011/10/16/integracion-continua-parte-i/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/5c51da68f3f1b191f8fe57cb4ed06186?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">prietopa</media:title>
		</media:content>
	</item>
		<item>
		<title>Mejorando el log de log4j, con isDebugEnabled()</title>
		<link>http://prietopa.wordpress.com/2011/09/25/mejorando-el-log-con-log4j-isdebugenabled/</link>
		<comments>http://prietopa.wordpress.com/2011/09/25/mejorando-el-log-con-log4j-isdebugenabled/#comments</comments>
		<pubDate>Sun, 25 Sep 2011 18:59:04 +0000</pubDate>
		<dc:creator>Jose Manuel Prieto</dc:creator>
				<category><![CDATA[Contenedor]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[log4j]]></category>
		<category><![CDATA[progrmacion]]></category>

		<guid isPermaLink="false">http://prietopa.wordpress.com/?p=246</guid>
		<description><![CDATA[¿Porqué poner isDebugEnabled() isErrorEnabled(), etc? Si el log de una aplicación está desactivado por completo o solo para unos niveles (error, warn&#8230;), el coste de una solicitud de log consiste en: llamada (invocación) al método + una comparación de enteros. Supone un coste en nanosegundos, pequeño, pero si tenemos la aplicación llena de líneas de log que [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=prietopa.wordpress.com&amp;blog=6212784&amp;post=246&amp;subd=prietopa&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>¿Porqué poner isDebugEnabled() isErrorEnabled(), etc?</p>
<p>Si el log de una aplicación está desactivado por completo o solo para unos niveles (error, warn&#8230;), el coste de una solicitud de log consiste en: llamada (invocación) al método + una comparación de enteros. Supone un coste en nanosegundos, pequeño, pero si tenemos la aplicación llena de líneas de log que no llaman a info&#8230; granito a granito creamos una montaña.</p>
<p>Si se pone log.isDebugEnabled() en el peor de los casos se pierde tiempo en evaluar la condición, pero hablamos de un tiempo inapreciable, mucho menor que en el caso anterior.</p>
<p>Por eso <strong>siempre</strong> que no vayamos a poner el nivel info es mejor preguntar, si estamos en ese nivel.</p>
<p><code>if(logger.isDebugEnabled() {<br />
logger.debug("Entry number: " + i + " is " + String.valueOf(entry[i]));<br />
}</code></p>
<p>Sacado del <a title="manual de log4j" href="http://logging.apache.org/log4j/1.2/manual.html#performance" target="_blank">manual de log4j</a>.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/prietopa.wordpress.com/246/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/prietopa.wordpress.com/246/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/prietopa.wordpress.com/246/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/prietopa.wordpress.com/246/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/prietopa.wordpress.com/246/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/prietopa.wordpress.com/246/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/prietopa.wordpress.com/246/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/prietopa.wordpress.com/246/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/prietopa.wordpress.com/246/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/prietopa.wordpress.com/246/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/prietopa.wordpress.com/246/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/prietopa.wordpress.com/246/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/prietopa.wordpress.com/246/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/prietopa.wordpress.com/246/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=prietopa.wordpress.com&amp;blog=6212784&amp;post=246&amp;subd=prietopa&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://prietopa.wordpress.com/2011/09/25/mejorando-el-log-con-log4j-isdebugenabled/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/5c51da68f3f1b191f8fe57cb4ed06186?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">prietopa</media:title>
		</media:content>
	</item>
		<item>
		<title>Java Assert</title>
		<link>http://prietopa.wordpress.com/2011/08/12/java-assert/</link>
		<comments>http://prietopa.wordpress.com/2011/08/12/java-assert/#comments</comments>
		<pubDate>Fri, 12 Aug 2011 19:38:22 +0000</pubDate>
		<dc:creator>Jose Manuel Prieto</dc:creator>
				<category><![CDATA[conocimiento del entorno]]></category>
		<category><![CDATA[programador]]></category>

		<guid isPermaLink="false">http://prietopa.wordpress.com/?p=239</guid>
		<description><![CDATA[Voy a hablar de los inconvenientes de usar la palabra reservada assert en Java. Mira este blog, o este otro, para hacerte una idea de lo que hablo. Aunque lo mejor es ir a la fuente. INCONVENIENTES: - (otros lo consideran una ventaja) para ejecutar las afirmaciones, hay que poner -ea (enable assert) a la [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=prietopa.wordpress.com&amp;blog=6212784&amp;post=239&amp;subd=prietopa&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Voy a hablar de los inconvenientes de usar la palabra reservada <em>assert</em> en Java. Mira este <a title="chuwiki" href="http://chuwiki.chuidiang.org/index.php?title=Uso_de_assert_en_java" target="_blank">blog</a>, o este <a title="adictosaltrabajo" href="http://www.adictosaltrabajo.com/tutoriales/tutoriales.php?pagina=asserts" target="_blank">otro</a>, para hacerte una idea de lo que hablo. Aunque lo mejor es ir a la <a title="oracle" href="http://download.oracle.com/javase/1.4.2/docs/guide/lang/assert.html" target="_blank">fuente</a>.</p>
<p>INCONVENIENTES:</p>
<ol>
<li>- (otros lo consideran una ventaja) para ejecutar las afirmaciones, hay que poner <em>-ea</em> (enable assert) a la hora de ejecutar.</li>
<li>- La excepción que lanza es: <em>AssertionError</em>, que hereda de <em>Error</em>. Error es una excepción que esta al mismo nivel que la clase <em>Exception</em>, pero a diferencia de esta, suele indicar problemas muy graves, que no suelen ser recuperables y <strong>no deben ser capturados</strong>.</li>
</ol>
<p>CONCLUSION:<br />
Solo para <span style="text-decoration:underline;">entornos de desarrollo</span>, no lo usaría en producción porque no se deben capturar las Excepciones que son de tipo <em>Error</em>. Y porque hay que saber que hay que poner <em>-ea</em> para que la <em>VM</em> no las ignore. Si bien es cierto que hay <a title="Thinking in Java" href="http://www.linuxtopia.org/online_books/programming_books/thinking_in_java/TIJ317_004.htm" target="_blank">maneras</a> de avisar de que es necesario activar las afirmaciones, pero es una cosa mas.<br />
Si necesitas validar unos parámetros, harás un if o crearás una arquitectura que te lo permita, para que el sistema no se pare. Por que con los <em>assert</em>, <strong>el sistema se para</strong>.<br />
Esta puede ser una de las razones por la cual no había oído antes nada sobre <em>Assert</em> en Java.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/prietopa.wordpress.com/239/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/prietopa.wordpress.com/239/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/prietopa.wordpress.com/239/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/prietopa.wordpress.com/239/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/prietopa.wordpress.com/239/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/prietopa.wordpress.com/239/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/prietopa.wordpress.com/239/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/prietopa.wordpress.com/239/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/prietopa.wordpress.com/239/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/prietopa.wordpress.com/239/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/prietopa.wordpress.com/239/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/prietopa.wordpress.com/239/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/prietopa.wordpress.com/239/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/prietopa.wordpress.com/239/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=prietopa.wordpress.com&amp;blog=6212784&amp;post=239&amp;subd=prietopa&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://prietopa.wordpress.com/2011/08/12/java-assert/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<georss:point>40.406683 -3.628032</georss:point>
		<geo:lat>40.406683</geo:lat>
		<geo:long>-3.628032</geo:long>
		<media:content url="http://1.gravatar.com/avatar/5c51da68f3f1b191f8fe57cb4ed06186?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">prietopa</media:title>
		</media:content>
	</item>
		<item>
		<title>Indentar sentencias sql con Notepad++</title>
		<link>http://prietopa.wordpress.com/2011/02/21/indentar-sentencias-sql-con-notepad/</link>
		<comments>http://prietopa.wordpress.com/2011/02/21/indentar-sentencias-sql-con-notepad/#comments</comments>
		<pubDate>Mon, 21 Feb 2011 09:16:24 +0000</pubDate>
		<dc:creator>Jose Manuel Prieto</dc:creator>
				<category><![CDATA[conocimiento del entorno]]></category>
		<category><![CDATA[programador]]></category>

		<guid isPermaLink="false">http://prietopa.wordpress.com/?p=232</guid>
		<description><![CDATA[Maqueta tus sentencias sql con macros y Notepad++<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=prietopa.wordpress.com&amp;blog=6212784&amp;post=232&amp;subd=prietopa&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Hace poco que me descarge el plugin <strong>XML-Tools</strong> para <strong>Notepad++</strong>, con el que puedes dar formato a un xml y además copiar el código con los colores, para por ejemplo, pasarlo a Word.<br />
El otro día, quería hacer lo mismo, dar formato, pero a sentencias SQL. Quería que me las indentase, que me bajara de línea, que lo pusiera bonito. Encontré en internet este <a href="http://peoplesoft.wikidot.com/formatting-sql-in-notepad">artículo</a>, que me dió la idea. El artículo te indica como hacerlo para una sentencia sql, mediante buscar y reemplazar. En notepad puedes buscar mediante expresiones regulares. Pero claro tener que hacer ese proceso continuamente con cada sentencia sql&#8230; es harto cansado.<br />
Asi que me propuse realizar un <strong>macro </strong>con los &#8220;Search and Replace&#8221; y para mi sorpresa ¡funciona.!<br />
Una vez grabado todo el proceso, inserto otra query y le digo a la macro que se ejecute. Me empiezan a salir los mensajes de cada uno de los &#8220;search and replace&#8221; que ha realizado, le voy dando a aceptar y la sentencia se me transforma a una muy visual.<br />
Los macros puedes grabarlos, en el menu de macro. Lo grabas y luego puedes ejecutarlo cuando quieras.</p>
<p>¿Necesitais unas capturas de pantalla?</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/prietopa.wordpress.com/232/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/prietopa.wordpress.com/232/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/prietopa.wordpress.com/232/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/prietopa.wordpress.com/232/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/prietopa.wordpress.com/232/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/prietopa.wordpress.com/232/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/prietopa.wordpress.com/232/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/prietopa.wordpress.com/232/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/prietopa.wordpress.com/232/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/prietopa.wordpress.com/232/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/prietopa.wordpress.com/232/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/prietopa.wordpress.com/232/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/prietopa.wordpress.com/232/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/prietopa.wordpress.com/232/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=prietopa.wordpress.com&amp;blog=6212784&amp;post=232&amp;subd=prietopa&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://prietopa.wordpress.com/2011/02/21/indentar-sentencias-sql-con-notepad/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<georss:point>40.406683 -3.628032</georss:point>
		<geo:lat>40.406683</geo:lat>
		<geo:long>-3.628032</geo:long>
		<media:content url="http://1.gravatar.com/avatar/5c51da68f3f1b191f8fe57cb4ed06186?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">prietopa</media:title>
		</media:content>
	</item>
		<item>
		<title>Final vs Inmutable vs constante</title>
		<link>http://prietopa.wordpress.com/2010/05/16/final-vs-inmutable-vs-constante/</link>
		<comments>http://prietopa.wordpress.com/2010/05/16/final-vs-inmutable-vs-constante/#comments</comments>
		<pubDate>Sun, 16 May 2010 17:29:49 +0000</pubDate>
		<dc:creator>Jose Manuel Prieto</dc:creator>
				<category><![CDATA[Contenedor]]></category>

		<guid isPermaLink="false">http://prietopa.wordpress.com/?p=220</guid>
		<description><![CDATA[CONSTANTE Esta es la declaración mas común de una constante. Public, para que se pueda acceder desde cualquier clase, sin tener que instanciar dicha clase. Static para que sea común a todas las clases que hereden de esta clase. Final para expecificar que una vez que sea instanciada no puede modificarse. El tipo de dato [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=prietopa.wordpress.com&amp;blog=6212784&amp;post=220&amp;subd=prietopa&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<h3>CONSTANTE</h3>
<p><pre class="brush: plain;">
public static final String VAR =  &quot;var&quot;;
</pre><br />
Esta es la declaración mas común de una constante.</p>
<ul>
<li><em>Public</em>, para que se pueda acceder desde cualquier clase, sin tener que instanciar dicha clase.</li>
<li><em>Static</em> para que sea común a todas las clases que hereden de esta clase.</li>
<li><em>Final</em> para expecificar que una vez que sea instanciada no puede modificarse.</li>
<li>El tipo de dato que va a representar.</li>
<li>La inicialización de la constante.</li>
</ul>
<h3>FINAL</h3>
<p><pre class="brush: plain;">
private final String var;
</pre><br />
Podemos declararla privada, sino queremos que sea para todo el mundo.<br />
El indicado <em>final</em>, señala que una vez inicializada no se podra modificar.<br />
NOTA: si es un tipo de dato privitivo (int, long, etc.) impedira que se modifique su valor.<br />
Pero si es una referencia, solo impide que se modifique la referencia, no el valor de la referencia.<br />
No se puede heredar si es final.</p>
<h3>INMUTABLE</h3>
<p>Inmutable significa que el valor no cambia.<br />
<pre class="brush: plain;">
private String var = &quot;perro&quot;;
private String var = &quot;gato&quot;;
</pre><br />
Para generar la primera linea, se crea un objeto con el contenido &#8220;perro&#8221;, este contenido<br />
no puede ser cambiado o modificado, ya que es inmutable. Se le pasa una referencia a la<br />
variable declarada.<br />
En la segunda linea se genera un objeto con el contenido &#8220;gato&#8221;, inmutable (no se puede cambiar),<br />
y se le pasa una referencia al la variable var de este objeto.<br />
Es decir el objeto var no ha cambiado su valor, ha cambiado la referencia.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/prietopa.wordpress.com/220/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/prietopa.wordpress.com/220/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/prietopa.wordpress.com/220/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/prietopa.wordpress.com/220/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/prietopa.wordpress.com/220/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/prietopa.wordpress.com/220/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/prietopa.wordpress.com/220/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/prietopa.wordpress.com/220/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/prietopa.wordpress.com/220/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/prietopa.wordpress.com/220/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/prietopa.wordpress.com/220/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/prietopa.wordpress.com/220/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/prietopa.wordpress.com/220/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/prietopa.wordpress.com/220/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=prietopa.wordpress.com&amp;blog=6212784&amp;post=220&amp;subd=prietopa&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://prietopa.wordpress.com/2010/05/16/final-vs-inmutable-vs-constante/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		<georss:point>40.406683 -3.628032</georss:point>
		<geo:lat>40.406683</geo:lat>
		<geo:long>-3.628032</geo:long>
		<media:content url="http://1.gravatar.com/avatar/5c51da68f3f1b191f8fe57cb4ed06186?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">prietopa</media:title>
		</media:content>
	</item>
		<item>
		<title>Diferencia entre final, finally y finalize()</title>
		<link>http://prietopa.wordpress.com/2010/02/17/diferencia-entre-final-finally-y-finalize/</link>
		<comments>http://prietopa.wordpress.com/2010/02/17/diferencia-entre-final-finally-y-finalize/#comments</comments>
		<pubDate>Wed, 17 Feb 2010 12:21:19 +0000</pubDate>
		<dc:creator>Jose Manuel Prieto</dc:creator>
				<category><![CDATA[programador]]></category>

		<guid isPermaLink="false">http://prietopa.wordpress.com/?p=207</guid>
		<description><![CDATA[Si tienes que liberar un fichero gestionado por un objeto, ¿que harías, llamar al método finalize(), o introducir una clausula finally? final: decalaración de una constante. El método finalize(): Algunos lenguajes de programación orientados a objetos requieren que el programador destruya explícitamente los objetos cuando dejan de utilizarse. Sin embargo en java, la JVM se [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=prietopa.wordpress.com&amp;blog=6212784&amp;post=207&amp;subd=prietopa&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<div id="_mcePaste" style="text-align:justify;">
<div>Si tienes que liberar un fichero gestionado por un objeto, ¿que harías, llamar al método <em>finalize()</em>, o introducir una clausula <em>finally</em>?</div>
<ul>
<li><strong>final</strong>: decalaración de una constante.</li>
<li>El método <strong><em>finalize()</em></strong>: Algunos lenguajes de programación orientados a objetos requieren que el programador destruya explícitamente los objetos cuando dejan de utilizarse. Sin embargo en java, la JVM se responsabiliza de reclamar la memoria reservada por los diferentes objetos estos quedan fuera de alcance (proceso denominado &#8220;<a href="http://java.sun.com/j2se/reference/whitepapers/memorymanagement_whitepaper.pdf" target="_blank">garbage collection</a>&#8220;, o de limpieza), por lo que se libera al programador de esta tarea. Hay dos importantes características del proceso de limpieza: 1) cuando un object sale de alcance, inmediatamente se le considero que pertenece a la &#8220;colección basura&#8221;. Pero no es del todo preciso. Al salir de alcance, lo que ocurre es que se le marca como candidato para la &#8220;colección basura&#8221;, y el proceso limpieza (que gestiona la colección) periódicamente va reclamando estos objetos en memoria fuera de alcance sin referenciar, de modo recursivo. Lo malo es que esto no ocurre en momentos predeterminados, pues no existe una especificación exacta en la JVM de cuando se ejecutará el proceso de limpieza.<br />
Si el proceso se ejecuta antes de que un objeto haya pasado a la colección-de-basura, el runtime de java invoca al método <em>finalize()</em> del objeto, permitiendo que este pueda realizar cualquiera las operaciones que liberen los recursos demandados al sistema tales como ficheros o sockets abiertos. Este método <em>finalize()</em> se declara como: <em>protected void finalize() throws Throwable</em>. El proceso de limpieza se ejecuta como un hilo demonio de bajo-nivel y, en general, para este tipo de hilos, no es esencial que el hilo se complete antes de que la aplicación termine.<br />
He aquí el problema, pues aunque pueda utilizarse el método finalize para realizar las operaciones de limpieza, el hilo recolector encargado de llamar al método <em>finalize()</em> de los objetos podría ejecutarse de un modo impredecible.</li>
</ul>
</div>
<div id="_mcePaste" style="text-align:justify;">
<ul>
<li style="text-align:justify;">La declaración <em><strong>finally </strong></em>en un bloque de código implica la <span style="text-decoration:underline;">liberación explícita</span> de cualquiera de los recursos externos que puedan ser mantenidos. A diferencia del método <em>finalize()</em>, la declaración <em>finally </em>no depende del proceso de limpieza del recolector de basura. La liberación de recursos dentro de un bloque <em>finally </em>es más aconsejable pues se garantiza que el código dentro del <em>finally </em>siempre será ejecutado incluso cuando haya una excepción inesperada en tiempo de ejecución.</li>
</ul>
</div>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/prietopa.wordpress.com/207/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/prietopa.wordpress.com/207/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/prietopa.wordpress.com/207/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/prietopa.wordpress.com/207/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/prietopa.wordpress.com/207/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/prietopa.wordpress.com/207/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/prietopa.wordpress.com/207/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/prietopa.wordpress.com/207/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/prietopa.wordpress.com/207/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/prietopa.wordpress.com/207/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/prietopa.wordpress.com/207/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/prietopa.wordpress.com/207/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/prietopa.wordpress.com/207/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/prietopa.wordpress.com/207/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=prietopa.wordpress.com&amp;blog=6212784&amp;post=207&amp;subd=prietopa&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://prietopa.wordpress.com/2010/02/17/diferencia-entre-final-finally-y-finalize/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<georss:point>40.406683 -3.628032</georss:point>
		<geo:lat>40.406683</geo:lat>
		<geo:long>-3.628032</geo:long>
		<media:content url="http://1.gravatar.com/avatar/5c51da68f3f1b191f8fe57cb4ed06186?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">prietopa</media:title>
		</media:content>
	</item>
		<item>
		<title>Clases y métodos genéricos</title>
		<link>http://prietopa.wordpress.com/2010/02/15/clases-y-metodos-genericos/</link>
		<comments>http://prietopa.wordpress.com/2010/02/15/clases-y-metodos-genericos/#comments</comments>
		<pubDate>Mon, 15 Feb 2010 15:47:23 +0000</pubDate>
		<dc:creator>Jose Manuel Prieto</dc:creator>
				<category><![CDATA[Contenedor]]></category>

		<guid isPermaLink="false">http://prietopa.wordpress.com/?p=201</guid>
		<description><![CDATA[Clases genéricas Métodos genéricos:<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=prietopa.wordpress.com&amp;blog=6212784&amp;post=201&amp;subd=prietopa&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Clases genéricas</p>
<p><pre class="brush: plain;">
public class UseTwo&lt;T, X&gt; {
	T one;
	X two;

	UseTwo(T one, X two) {
		this.one = one;
		this.two = two;
	}

	T getT() {
		return one;
	}

	X getX() {
		return two;
	}

	// test it by creating it with &lt;String, Integer&gt;
	public static void main(String[] args) {
		UseTwo&lt;String, Integer&gt; twos = new UseTwo&lt;String, Integer&gt;(&quot;foo&quot;, 42);
		String theT = twos.getT(); // returns a String
		int theX = twos.getX(); // returns Integer, unboxes to int
	}
}
</pre></p>
<p>Métodos genéricos:</p>
<p><pre class="brush: plain;">
public class CreateAnArrayList {
	public &lt;T&gt; void makeArrayList(T t) { // take an object of an unknown type and use a
	                                     // &quot;T&quot; to represent the type
		List&lt;T&gt; list = new ArrayList&lt;T&gt;(); // now we can create the
		// list using &quot;T&quot;
		list.add(t);

		System.out.println(list.get(0).toString());
	}

	public static void main(String[] args) {
		CreateAnArrayList arr = new CreateAnArrayList();
		Horse h = new Horse(4, &quot;eno&quot;);
		arr.makeArrayList(h);
	}
}
</pre></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/prietopa.wordpress.com/201/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/prietopa.wordpress.com/201/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/prietopa.wordpress.com/201/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/prietopa.wordpress.com/201/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/prietopa.wordpress.com/201/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/prietopa.wordpress.com/201/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/prietopa.wordpress.com/201/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/prietopa.wordpress.com/201/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/prietopa.wordpress.com/201/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/prietopa.wordpress.com/201/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/prietopa.wordpress.com/201/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/prietopa.wordpress.com/201/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/prietopa.wordpress.com/201/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/prietopa.wordpress.com/201/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=prietopa.wordpress.com&amp;blog=6212784&amp;post=201&amp;subd=prietopa&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://prietopa.wordpress.com/2010/02/15/clases-y-metodos-genericos/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<georss:point>40.406683 -3.628032</georss:point>
		<geo:lat>40.406683</geo:lat>
		<geo:long>-3.628032</geo:long>
		<media:content url="http://1.gravatar.com/avatar/5c51da68f3f1b191f8fe57cb4ed06186?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">prietopa</media:title>
		</media:content>
	</item>
		<item>
		<title>‘Collection’ en java 1.6</title>
		<link>http://prietopa.wordpress.com/2010/02/15/%e2%80%98collection%e2%80%99-en-java-1-6/</link>
		<comments>http://prietopa.wordpress.com/2010/02/15/%e2%80%98collection%e2%80%99-en-java-1-6/#comments</comments>
		<pubDate>Mon, 15 Feb 2010 15:32:43 +0000</pubDate>
		<dc:creator>Jose Manuel Prieto</dc:creator>
				<category><![CDATA[programador]]></category>
		<category><![CDATA[colecciones en java]]></category>
		<category><![CDATA[collection]]></category>

		<guid isPermaLink="false">http://prietopa.wordpress.com/?p=194</guid>
		<description><![CDATA[List: un conjunto de cosas Set: cosas únicas Map: cosas con un único ID (identificador) Queues: cosas organizadas en orden a cómo deben ser procesadas. Ordenado (Ordered): Significa que la colección se puede iterar en un orden específico no aleatorio. Clasificado (Sorted): el orden de la colección es determinado acorde a unas reglas, basadas en [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=prietopa.wordpress.com&amp;blog=6212784&amp;post=194&amp;subd=prietopa&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><strong>List</strong>: un conjunto de cosas<br />
<strong>Set</strong>: cosas únicas<br />
<strong>Map</strong>: cosas con un único ID (identificador)<br />
<strong>Queues</strong>: cosas organizadas en orden a cómo deben ser procesadas.</p>
<p><strong>Ordenado (Ordered): </strong>Significa que la colección se puede iterar en un orden específico no aleatorio.</p>
<p><strong>Clasificado (Sorted):</strong> el orden de la colección es determinado acorde a unas reglas, basadas en las propiedades de los objetos que la componen. La ordenación natural: alfabética o numérica.</p>
<h2>Comparable vs Comparator (<a href="http://devpinoy.org/blogs/lamia/archive/2007/04/16/java-util-comparable-vs-java-util-comparator.aspx" target="_blank">artículo</a>)</h2>
<p><a href="http://devpinoy.org/blogs/lamia/archive/2007/04/16/java-util-comparable-vs-java-util-comparator.aspx"></a>A través de la Interfaz ‘<em>Comparable</em>’ que define como la instancia de una clase puede ser comparada con otra (la clase persona se ordena por el nombre).</p>
<table border="1" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td width="269"><span style="font-family:Georgia, 'Times New Roman', 'Bitstream Charter', Times, serif;font-size:small;"><span style="line-height:19px;white-space:normal;">java.lang.Comparable</span></span></td>
<td width="254">
<pre><span style="font-family:Georgia, 'Times New Roman', 'Bitstream Charter', Times, serif;font-size:small;"><span style="line-height:19px;white-space:normal;">java.util.Comparator</span></span></pre>
</td>
</tr>
<tr>
<td width="269">
<pre><span style="font-family:Georgia, 'Times New Roman', 'Bitstream Charter', Times, serif;font-size:small;"><span style="line-height:19px;white-space:normal;">int objOne.compareTo(objTwo)</span></span></pre>
</td>
<td width="254">
<pre><span style="font-family:Georgia, 'Times New Roman', 'Bitstream Charter', Times, serif;font-size:small;"><span style="line-height:19px;white-space:normal;">int compare(objOne, objTwo)</span></span></pre>
</td>
</tr>
<tr>
<td width="269"><span style="font-size:small;"><span style="line-height:19px;">Returns<br />
negative if objOne &lt; objTwo<br />
zero if objOne == objTwo<br />
positive if objOne &gt; objTwo</span></span></td>
<td width="254">
<pre><span style="font-family:Georgia, 'Times New Roman', 'Bitstream Charter', Times, serif;font-size:small;"><span style="line-height:19px;white-space:normal;">Same as Comparable</span></span></pre>
</td>
</tr>
<tr>
<td width="269"><span style="font-size:small;"><span style="line-height:19px;">You must modify the class   whose instances you want to sort.</span></span></td>
<td width="254"><span style="font-size:small;"><span style="line-height:19px;">You build a class separate   from the class whose instances you want to sort.</span></span></td>
</tr>
<tr>
<td width="269">
<pre><span style="font-family:Georgia, 'Times New Roman', 'Bitstream Charter', Times, serif;font-size:small;"><span style="line-height:19px;white-space:normal;">Only one sort sequence can be created</span></span></pre>
</td>
<td width="254">
<pre><span style="font-family:Georgia, 'Times New Roman', 'Bitstream Charter', Times, serif;font-size:small;"><span style="line-height:19px;white-space:normal;">Many sort sequences can be created</span></span></pre>
</td>
</tr>
<tr>
<td width="269"><span style="font-size:small;"><span style="line-height:19px;">Implemented frequently in   the API by:</span></span></p>
<pre><span style="font-family:Georgia, 'Times New Roman', 'Bitstream Charter', Times, serif;font-size:small;"><span style="line-height:19px;white-space:normal;">String, Wrapper classes, Date, Calendar...</span></span></pre>
</td>
<td width="254"><span style="font-size:small;"><span style="line-height:19px;">Meant to be implemented to   sort instances of third-party classes.</span></span></td>
</tr>
</tbody>
</table>
<p><pre class="brush: plain;">
public class Employee implements Comparable&lt;Employee&gt;
{
private String name;
private int age;

public Employee(String name, int age)
{
this.name = name;
this.age = age;
}

public int compareTo(Employee e)
{
//comparison strategy
}

public static void main(String[] args)
{
List&lt;Employee&gt; employeeList = new ArrayList&lt;Employee&gt;();
employeeList.add( new Employee(&quot;Tim&quot;, 10) );
employeeList.add( new Employee(&quot;Rolvin&quot;, 11) );
employeeList.add( new Employee(&quot;Gerald&quot;, 12) );

Collections.sort(employeeList);
}
}
</pre></p>
<p>A través de la interfaz ‘<em>Comparator</em>’: se pueden implementar otras clases que implementan otros tipos de ordenación (la clase persona se ordena por nombre, o por apellido o por edad).</p>
<p><pre class="brush: plain;">
public class SortByName implements Comparator&lt;Employee&gt;
{
public int compare(Employee e1, Employee e2)
{
//comparison strategy here
}
}
</pre></p>
<p><pre class="brush: plain;">
public class SortByAge implements Comparator&lt;Employee&gt;
{
public int compare(Employee e1, Employee e2)
{
//comparison strategy here
}
}
</pre></p>
<p><pre class="brush: plain;">
public static void main(String[] args)
{
List&lt;Employee&gt; employeeList = new ArrayList&lt;Employee&gt;();
employeeList.add( new Employee(&quot;Tim&quot;, 10) );
employeeList.add( new Employee(&quot;Rolvin&quot;, 11) );
employeeList.add( new Employee(&quot;Gerald&quot;, 12) );

Collections.sort(employeeList, new SortByName() );//sort by name;
Collections.sort(employeeList, new SortByAge() );//sort by age;

}
</pre></p>
<h2>La interfaz List</h2>
<p>Sus implementaciones son ordenadas por el index.</p>
<p><pre class="brush: plain;">
get(int index), indexOf(Object o), add(int index, Object obj)
</pre></p>
<p><strong>ArrayList</strong>: es un array con la capacidad de crecer. Ofrece una rápida iteración y acceso. Ordered pero no Sorted.<br />
<strong>Vector</strong>: lo mismo que ArrayList pero es Synchronized.<br />
<strong>LinkedList</strong>: mantiene el orden de los objetos según su inserción. Más lento en la iteración que el ArrayList pero más rápido en la inserción y eliminación. Implementa la interfaz java.util.Queue, que proporciona los métodos:</p>
<p><pre class="brush: plain;">
java.util.Queue
peek(), poll(), and offer().
</pre></p>
<p>El método <strong>peek</strong> devuelve, pero no borra, la cabecera de la cola.<br />
El método <strong>poll</strong> devuelve y borra la cabecera de la cola<br />
El método <strong>add</strong> inserta un elemento a no ser que se supere la capacidad de la cola, en este caso se lanza una IllegalStateException.<br />
El método <strong>offer</strong> es igual que add pero devuelve false si existe algun error en la insercción.</p>
<h2>La interfaz Set</h2>
<p>No permite duplicados.<br />
<strong>HashSet</strong>: es ‘<em>unsorted and unordered</em>’ no se puede ni ordenar ni clasificar. Usa el hasCode() de los objetos para insertarlos. Para colecciones sin duplicados pero no importa el orden en que se recorran<br />
<strong>LinkedHashSet</strong>: es una versión ordenada de HashSet. Ordena los elementos en función del orden de inserción.<br />
<strong>TreeSet</strong>: usa la estructura de <a href="http://en.wikipedia.org/wiki/Red-black_tree">árbol Red-Black</a>. Ordena los elementos según se insertan en orden ascendente. Implementa ‘<em>NavigableSet</em>’. Puedes personalizar la clasificación.</p>
<h2>La interfaz Map</h2>
<p>Tiene un único identificador para un valor. (key /value)<br />
<strong>HashMap</strong>: es ‘<em>unsorted and unordered</em>’ no se puede ni ordenar ni clasificar. Permite la llave nula y múltiples valores nulos.<br />
<strong>HashTable</strong>: similar a HashMap pero es Synchronized. Ningún elemento debe ser nulo. <strong>LinkedHashmap</strong>: mantiene el orden de inserción. <strong>TreeMap</strong>: Ordena los elementos según se insertan en orden ascendente. Implementa ‘<em>NavigableSet</em>’. Puedes personalizar la clasificación.</p>
<h2>La interfaz Queue</h2>
<p>Como una pila FIFO (First In – First Out).<br />
<strong>PriorityQueue</strong>: es una lista de prioridades (Priority In – Priority Out). La prioridad viene determinada por la clasificación de los elementos.</p>
<table border="1" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td width="102">
<pre><span style="font-family:Georgia, 'Times New Roman', 'Bitstream Charter', Times, serif;font-size:small;"><span style="line-height:19px;white-space:normal;"><strong>CLASE</strong></span></span></pre>
</td>
<td width="47">
<pre><span style="font-family:Georgia, 'Times New Roman', 'Bitstream Charter', Times, serif;font-size:small;"><span style="line-height:19px;white-space:normal;"><strong>MAP</strong></span></span></pre>
</td>
<td width="38">
<pre><span style="font-family:Georgia, 'Times New Roman', 'Bitstream Charter', Times, serif;font-size:small;"><span style="line-height:19px;white-space:normal;"><strong>SET</strong></span></span></pre>
</td>
<td width="47">
<pre><span style="font-family:Georgia, 'Times New Roman', 'Bitstream Charter', Times, serif;font-size:small;"><span style="line-height:19px;white-space:normal;"><strong>LIST</strong></span></span></pre>
</td>
<td width="113">
<pre><span style="font-family:Georgia, 'Times New Roman', 'Bitstream Charter', Times, serif;font-size:small;"><span style="line-height:19px;white-space:normal;"><strong>ORDERED</strong></span></span></pre>
</td>
<td width="142">
<pre><span style="font-family:Georgia, 'Times New Roman', 'Bitstream Charter', Times, serif;font-size:small;"><span style="line-height:19px;white-space:normal;"><strong>SORTED</strong></span></span></pre>
</td>
</tr>
<tr>
<td width="102">
<pre><span style="font-family:Georgia, 'Times New Roman', 'Bitstream Charter', Times, serif;font-size:small;"><span style="line-height:19px;white-space:normal;">HashMap</span></span></pre>
</td>
<td width="47">
<pre style="text-align:center;"><span style="font-family:Georgia, 'Times New Roman', 'Bitstream Charter', Times, serif;font-size:small;"><span style="line-height:19px;white-space:normal;">X</span></span></pre>
</td>
<td width="38">
<pre><span style="font-family:Georgia, 'Times New Roman', 'Bitstream Charter', Times, serif;font-size:small;"><span style="line-height:19px;white-space:normal;"> </span></span></pre>
</td>
<td width="47">
<pre><span style="font-family:Georgia, 'Times New Roman', 'Bitstream Charter', Times, serif;font-size:small;"><span style="line-height:19px;white-space:normal;"> </span></span></pre>
</td>
<td width="113">
<pre><span style="font-family:Georgia, 'Times New Roman', 'Bitstream Charter', Times, serif;font-size:small;"><span style="line-height:19px;white-space:normal;">NO</span></span></pre>
</td>
<td width="142">
<pre><span style="font-family:Georgia, 'Times New Roman', 'Bitstream Charter', Times, serif;font-size:small;"><span style="line-height:19px;white-space:normal;">NO</span></span></pre>
</td>
</tr>
<tr>
<td width="102">
<pre><span style="font-family:Georgia, 'Times New Roman', 'Bitstream Charter', Times, serif;font-size:small;"><span style="line-height:19px;white-space:normal;">HashTable</span></span></pre>
</td>
<td width="47">
<pre style="text-align:center;"><span style="font-family:Georgia, 'Times New Roman', 'Bitstream Charter', Times, serif;font-size:small;"><span style="line-height:19px;white-space:normal;">X</span></span></pre>
</td>
<td width="38">
<pre><span style="font-family:Georgia, 'Times New Roman', 'Bitstream Charter', Times, serif;font-size:small;"><span style="line-height:19px;white-space:normal;"> </span></span></pre>
</td>
<td width="47">
<pre><span style="font-family:Georgia, 'Times New Roman', 'Bitstream Charter', Times, serif;font-size:small;"><span style="line-height:19px;white-space:normal;"> </span></span></pre>
</td>
<td width="113">
<pre><span style="font-family:Georgia, 'Times New Roman', 'Bitstream Charter', Times, serif;font-size:small;"><span style="line-height:19px;white-space:normal;">NO</span></span></pre>
</td>
<td width="142">
<pre><span style="font-family:Georgia, 'Times New Roman', 'Bitstream Charter', Times, serif;font-size:small;"><span style="line-height:19px;white-space:normal;">NO</span></span></pre>
</td>
</tr>
<tr>
<td width="102">
<pre><span style="font-family:Georgia, 'Times New Roman', 'Bitstream Charter', Times, serif;font-size:small;"><span style="line-height:19px;white-space:normal;">TreeMap</span></span></pre>
</td>
<td width="47">
<pre style="text-align:center;"><span style="font-family:Georgia, 'Times New Roman', 'Bitstream Charter', Times, serif;font-size:small;"><span style="line-height:19px;white-space:normal;">X</span></span></pre>
</td>
<td width="38">
<pre><span style="font-family:Georgia, 'Times New Roman', 'Bitstream Charter', Times, serif;font-size:small;"><span style="line-height:19px;white-space:normal;"> </span></span></pre>
</td>
<td width="47">
<pre><span style="font-family:Georgia, 'Times New Roman', 'Bitstream Charter', Times, serif;font-size:small;"><span style="line-height:19px;white-space:normal;"> </span></span></pre>
</td>
<td width="113">
<pre><span style="font-family:Georgia, 'Times New Roman', 'Bitstream Charter', Times, serif;font-size:small;"><span style="line-height:19px;white-space:normal;">SORTED</span></span></pre>
</td>
<td width="142"><span style="font-size:small;"><span style="line-height:19px;">By natural   order or <span style="font-size:small;">custom comparison rules</span></span></span></td>
</tr>
<tr>
<td width="102">
<pre><span style="font-family:Georgia, 'Times New Roman', 'Bitstream Charter', Times, serif;font-size:small;"><span style="line-height:19px;white-space:normal;">LinkedHashMap</span></span></pre>
</td>
<td width="47">
<pre style="text-align:center;"><span style="font-family:Georgia, 'Times New Roman', 'Bitstream Charter', Times, serif;font-size:small;"><span style="line-height:19px;white-space:normal;">X</span></span></pre>
</td>
<td width="38">
<pre><span style="font-family:Georgia, 'Times New Roman', 'Bitstream Charter', Times, serif;font-size:small;"><span style="line-height:19px;white-space:normal;"> </span></span></pre>
</td>
<td width="47">
<pre><span style="font-family:Georgia, 'Times New Roman', 'Bitstream Charter', Times, serif;font-size:small;"><span style="line-height:19px;white-space:normal;"> </span></span></pre>
</td>
<td width="113">
<pre><span style="font-family:Georgia, 'Times New Roman', 'Bitstream Charter', Times, serif;font-size:small;"><span style="line-height:19px;white-space:normal;">By insertion order or last access order</span></span></pre>
</td>
<td width="142">
<pre><span style="font-family:Georgia, 'Times New Roman', 'Bitstream Charter', Times, serif;font-size:small;"><span style="line-height:19px;white-space:normal;">NO</span></span></pre>
</td>
</tr>
<tr>
<td width="102">
<pre><span style="font-family:Georgia, 'Times New Roman', 'Bitstream Charter', Times, serif;font-size:small;"><span style="line-height:19px;white-space:normal;">HashSet</span></span></pre>
</td>
<td width="47">
<pre><span style="font-family:Georgia, 'Times New Roman', 'Bitstream Charter', Times, serif;font-size:small;"><span style="line-height:19px;white-space:normal;"> </span></span></pre>
</td>
<td width="38">
<pre style="text-align:center;"><span style="font-family:Georgia, 'Times New Roman', 'Bitstream Charter', Times, serif;font-size:small;"><span style="line-height:19px;white-space:normal;">X</span></span></pre>
</td>
<td width="47">
<pre><span style="font-family:Georgia, 'Times New Roman', 'Bitstream Charter', Times, serif;font-size:small;"><span style="line-height:19px;white-space:normal;"> </span></span></pre>
</td>
<td width="113">
<pre><span style="font-family:Georgia, 'Times New Roman', 'Bitstream Charter', Times, serif;font-size:small;"><span style="line-height:19px;white-space:normal;">NO</span></span></pre>
</td>
<td width="142">
<pre><span style="font-family:Georgia, 'Times New Roman', 'Bitstream Charter', Times, serif;font-size:small;"><span style="line-height:19px;white-space:normal;">NO</span></span></pre>
</td>
</tr>
<tr>
<td width="102">
<pre><span style="font-family:Georgia, 'Times New Roman', 'Bitstream Charter', Times, serif;font-size:small;"><span style="line-height:19px;white-space:normal;">TreeSet</span></span></pre>
</td>
<td width="47">
<pre><span style="font-family:Georgia, 'Times New Roman', 'Bitstream Charter', Times, serif;font-size:small;"><span style="line-height:19px;white-space:normal;"> </span></span></pre>
</td>
<td width="38">
<pre style="text-align:center;"><span style="font-family:Georgia, 'Times New Roman', 'Bitstream Charter', Times, serif;font-size:small;"><span style="line-height:19px;white-space:normal;">X</span></span></pre>
</td>
<td width="47">
<pre><span style="font-family:Georgia, 'Times New Roman', 'Bitstream Charter', Times, serif;font-size:small;"><span style="line-height:19px;white-space:normal;"> </span></span></pre>
</td>
<td width="113">
<pre><span style="font-family:Georgia, 'Times New Roman', 'Bitstream Charter', Times, serif;font-size:small;"><span style="line-height:19px;white-space:normal;">SORTED</span></span></pre>
</td>
<td width="142"><span style="font-size:small;"><span style="line-height:19px;">By natural   order or</span></span></p>
<pre><span style="font-family:Georgia, 'Times New Roman', 'Bitstream Charter', Times, serif;font-size:small;"><span style="line-height:19px;white-space:normal;">custom comparison rules</span></span></pre>
</td>
</tr>
<tr>
<td width="102">
<pre><span style="font-family:Georgia, 'Times New Roman', 'Bitstream Charter', Times, serif;font-size:small;"><span style="line-height:19px;white-space:normal;">LinkedHashSet</span></span></pre>
</td>
<td width="47">
<pre><span style="font-family:Georgia, 'Times New Roman', 'Bitstream Charter', Times, serif;font-size:small;"><span style="line-height:19px;white-space:normal;"> </span></span></pre>
</td>
<td width="38">
<pre style="text-align:center;"><span style="font-family:Georgia, 'Times New Roman', 'Bitstream Charter', Times, serif;font-size:small;"><span style="line-height:19px;white-space:normal;">X</span></span></pre>
</td>
<td width="47">
<pre><span style="font-family:Georgia, 'Times New Roman', 'Bitstream Charter', Times, serif;font-size:small;"><span style="line-height:19px;white-space:normal;"> </span></span></pre>
</td>
<td width="113">
<pre><span style="font-family:Georgia, 'Times New Roman', 'Bitstream Charter', Times, serif;font-size:small;"><span style="line-height:19px;white-space:normal;">By insertion order</span></span></pre>
</td>
<td width="142">
<pre><span style="font-family:Georgia, 'Times New Roman', 'Bitstream Charter', Times, serif;font-size:small;"><span style="line-height:19px;white-space:normal;">NO</span></span></pre>
</td>
</tr>
<tr>
<td width="102">
<pre><span style="font-family:Georgia, 'Times New Roman', 'Bitstream Charter', Times, serif;font-size:small;"><span style="line-height:19px;white-space:normal;">ArrayList</span></span></pre>
</td>
<td width="47">
<pre><span style="font-family:Georgia, 'Times New Roman', 'Bitstream Charter', Times, serif;font-size:small;"><span style="line-height:19px;white-space:normal;"> </span></span></pre>
</td>
<td width="38">
<pre><span style="font-family:Georgia, 'Times New Roman', 'Bitstream Charter', Times, serif;font-size:small;"><span style="line-height:19px;white-space:normal;"> </span></span></pre>
</td>
<td width="47">
<pre style="text-align:center;"><span style="font-family:Georgia, 'Times New Roman', 'Bitstream Charter', Times, serif;font-size:small;"><span style="line-height:19px;white-space:normal;">X</span></span></pre>
</td>
<td width="113">
<pre><span style="font-family:Georgia, 'Times New Roman', 'Bitstream Charter', Times, serif;font-size:small;"><span style="line-height:19px;white-space:normal;">BY INDEX</span></span></pre>
</td>
<td width="142">
<pre><span style="font-family:Georgia, 'Times New Roman', 'Bitstream Charter', Times, serif;font-size:small;"><span style="line-height:19px;white-space:normal;">NO</span></span></pre>
</td>
</tr>
<tr>
<td width="102">
<pre><span style="font-family:Georgia, 'Times New Roman', 'Bitstream Charter', Times, serif;font-size:small;"><span style="line-height:19px;white-space:normal;">Vecctor</span></span></pre>
</td>
<td width="47">
<pre><span style="font-family:Georgia, 'Times New Roman', 'Bitstream Charter', Times, serif;font-size:small;"><span style="line-height:19px;white-space:normal;"> </span></span></pre>
</td>
<td width="38">
<pre><span style="font-family:Georgia, 'Times New Roman', 'Bitstream Charter', Times, serif;font-size:small;"><span style="line-height:19px;white-space:normal;"> </span></span></pre>
</td>
<td width="47">
<pre style="text-align:center;"><span style="font-family:Georgia, 'Times New Roman', 'Bitstream Charter', Times, serif;font-size:small;"><span style="line-height:19px;white-space:normal;">X</span></span></pre>
</td>
<td width="113">
<pre><span style="font-family:Georgia, 'Times New Roman', 'Bitstream Charter', Times, serif;font-size:small;"><span style="line-height:19px;white-space:normal;">BY INDEX</span></span></pre>
</td>
<td width="142">
<pre><span style="font-family:Georgia, 'Times New Roman', 'Bitstream Charter', Times, serif;font-size:small;"><span style="line-height:19px;white-space:normal;">NO</span></span></pre>
</td>
</tr>
<tr>
<td width="102">
<pre><span style="font-family:Georgia, 'Times New Roman', 'Bitstream Charter', Times, serif;font-size:small;"><span style="line-height:19px;white-space:normal;">LinkedList</span></span></pre>
</td>
<td width="47">
<pre><span style="font-family:Georgia, 'Times New Roman', 'Bitstream Charter', Times, serif;font-size:small;"><span style="line-height:19px;white-space:normal;"> </span></span></pre>
</td>
<td width="38">
<pre><span style="font-family:Georgia, 'Times New Roman', 'Bitstream Charter', Times, serif;font-size:small;"><span style="line-height:19px;white-space:normal;"> </span></span></pre>
</td>
<td width="47">
<pre style="text-align:center;"><span style="font-family:Georgia, 'Times New Roman', 'Bitstream Charter', Times, serif;font-size:small;"><span style="line-height:19px;white-space:normal;">X</span></span></pre>
</td>
<td width="113">
<pre><span style="font-family:Georgia, 'Times New Roman', 'Bitstream Charter', Times, serif;font-size:small;"><span style="line-height:19px;white-space:normal;">BY INDEX</span></span></pre>
</td>
<td width="142">
<pre><span style="font-family:Georgia, 'Times New Roman', 'Bitstream Charter', Times, serif;font-size:small;"><span style="line-height:19px;white-space:normal;">NO</span></span></pre>
</td>
</tr>
<tr>
<td width="102">
<pre><span style="font-family:Georgia, 'Times New Roman', 'Bitstream Charter', Times, serif;font-size:small;"><span style="line-height:19px;white-space:normal;">PriorityQueue</span></span></pre>
</td>
<td width="47">
<pre><span style="font-family:Georgia, 'Times New Roman', 'Bitstream Charter', Times, serif;font-size:small;"><span style="line-height:19px;white-space:normal;"> </span></span></pre>
</td>
<td width="38">
<pre><span style="font-family:Georgia, 'Times New Roman', 'Bitstream Charter', Times, serif;font-size:small;"><span style="line-height:19px;white-space:normal;"> </span></span></pre>
</td>
<td width="47">
<pre><span style="font-family:Georgia, 'Times New Roman', 'Bitstream Charter', Times, serif;font-size:small;"><span style="line-height:19px;white-space:normal;"> </span></span></pre>
</td>
<td width="113">
<pre><span style="font-family:Georgia, 'Times New Roman', 'Bitstream Charter', Times, serif;font-size:small;"><span style="line-height:19px;white-space:normal;">SORTED</span></span></pre>
</td>
<td width="142">
<pre><span style="font-family:Georgia, 'Times New Roman', 'Bitstream Charter', Times, serif;font-size:small;"><span style="line-height:19px;white-space:normal;">By TO-DO order</span></span></pre>
</td>
</tr>
</tbody>
</table>
<h2>ArrayList</h2>
<p>Ventaja sobre un array: a) crece dinámicamente, b)inserción y búsqueda mejoradas.<br />
Cómo ordenar un ArrayList:</p>
<p><pre class="brush: plain;">
ArrayList&lt;String&gt; stuff = new ArrayList&lt;String&gt;();
stuff.add(&quot;Denver&quot;);
stuff.add(&quot;Boulder&quot;);
stuff.add(&quot;Vail&quot;);
stuff.add(&quot;Aspen&quot;);
stuff.add(&quot;Telluride&quot;);
System.out.println(&quot;unsorted &quot; + stuff);
Collections.sort(stuff);
System.out.println(&quot;sorted &quot; + stuff);
</pre></p>
<p><pre class="brush: plain;">
unsorted [Denver, Boulder, Vail, Aspen, Telluride]
sorted [Aspen, Boulder, Denver, Telluride, Vail]
</pre></p>
<p>Utilizando la ordenación de los arrays.</p>
<p><pre class="brush: plain;">
Arrays.sort(arrayToSort)
</pre></p>
<p>Búsqueda en Arrays y Collection:<br />
-   Utilizan el método BinarySearch(): Arrays.binarySearch(arrayList,&#8221;one&#8221;)<br />
-   Las búsquedas satisfactorias devuelven un ‘int’ que representa el índice del elemento.<br />
-   Las búsquedas no satisfactorias devuelven in ‘int’ que representa el punto de insercción.</p>
<p>Convertir Arrays en Listas</p>
<p><pre class="brush: plain;">
String[] sa = {&quot;one&quot;, &quot;two&quot;, &quot;three&quot;, &quot;four&quot;};
List sList = Arrays.asList(sa);
</pre></p>
<p>Backed Collections</p>
<p><pre class="brush: plain;">
TreeMap&lt;String, String&gt; map = new TreeMap&lt;String, String&gt;();
map.put(&quot;a&quot;, &quot;ant&quot;); map.put(&quot;d&quot;, &quot;dog&quot;); map.put(&quot;h&quot;, &quot;horse&quot;);
SortedMap&lt;String, String&gt; submap;
submap = map.subMap(&quot;b&quot;, &quot;g&quot;); // #1 create a backed collection
System.out.println(map + &quot; &quot; + submap); // #2 show contents
map.put(&quot;b&quot;, &quot;bat&quot;); // #3 add to original
submap.put(&quot;f&quot;, &quot;fish&quot;); // #4 add to copy
map.put(&quot;r&quot;, &quot;raccoon&quot;); // #5 add to original - out of range
// submap.put(&quot;p&quot;, &quot;pig&quot;); // #6 add to copy - out of range
System.out.println(map + &quot; &quot; + submap); // #7 show final contents
</pre></p>
<p><pre class="brush: plain;">
{a=ant, d=dog, h=horse} {d=dog}
{a=ant, b=bat, d=dog, f=fish, h=horse, r=raccoon} {b=bat, d=dog, f=fish}
</pre></p>
<p>TreeMap.subMap(desde el valor inicial, hasta el valor final);<br />
La subcoleción registra las modificaciones realizadas en la colección a la que pertenece.<br />
El dato insertado en la subcoleción también se registra en la colección.</p>
<p>headSet: Empieza al principio y termina en el dato pasado como parámetro.<br />
TreeSet.headSet();                        TreeMap.headSet();</p>
<p>subSet: Indica cuando empieza y acaba con los parámetros.<br />
TreeSet.subSet();                           TreeMap.subSet();</p>
<p>TailSet: desde el parámetro pasado como argumento hasta el final.<br />
TreeSet.tailSet();                            TreeMap.tailSet();</p>
<p>Bibliografia:<br />
- <a href="http://java.sun.com/docs/books/tutorial/collections/interfaces/index.html" target="_blank">http://java.sun.com/docs/books/tutorial/collections/interfaces/index.html</a><br />
- Libro:  <a href="http://www.amazon.com/SCJP-Certified-Programmer-Java-310-065/dp/0071591060">SCJP  Sun Certified Programmer for Java 6 Exam 310-065</a></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/prietopa.wordpress.com/194/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/prietopa.wordpress.com/194/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/prietopa.wordpress.com/194/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/prietopa.wordpress.com/194/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/prietopa.wordpress.com/194/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/prietopa.wordpress.com/194/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/prietopa.wordpress.com/194/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/prietopa.wordpress.com/194/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/prietopa.wordpress.com/194/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/prietopa.wordpress.com/194/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/prietopa.wordpress.com/194/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/prietopa.wordpress.com/194/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/prietopa.wordpress.com/194/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/prietopa.wordpress.com/194/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=prietopa.wordpress.com&amp;blog=6212784&amp;post=194&amp;subd=prietopa&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://prietopa.wordpress.com/2010/02/15/%e2%80%98collection%e2%80%99-en-java-1-6/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		<georss:point>40.406683 -3.628032</georss:point>
		<geo:lat>40.406683</geo:lat>
		<geo:long>-3.628032</geo:long>
		<media:content url="http://1.gravatar.com/avatar/5c51da68f3f1b191f8fe57cb4ed06186?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">prietopa</media:title>
		</media:content>
	</item>
		<item>
		<title>Sobrecargando  Widening, Boxing, Varargs</title>
		<link>http://prietopa.wordpress.com/2010/02/12/sobrecargando-widening-boxing-varargs/</link>
		<comments>http://prietopa.wordpress.com/2010/02/12/sobrecargando-widening-boxing-varargs/#comments</comments>
		<pubDate>Fri, 12 Feb 2010 11:33:03 +0000</pubDate>
		<dc:creator>Jose Manuel Prieto</dc:creator>
				<category><![CDATA[Contenedor]]></category>

		<guid isPermaLink="false">http://prietopa.wordpress.com/?p=190</guid>
		<description><![CDATA[Widening Las 19 siguientes conversiones de tipos primitivos son llamados &#8216;widening primitive conversions&#8217;: byte to short, int, long, float, or double short to int, long, float, or double char to int, long, float, or double int to long, float, or double long to float or double float to double No pierden información Consola: Indica la información [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=prietopa.wordpress.com&amp;blog=6212784&amp;post=190&amp;subd=prietopa&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<h2>Widening</h2>
<p>Las 19 siguientes conversiones de tipos primitivos son llamados &#8216;widening primitive conversions&#8217;:</p>
<p>byte to short, int, long, float, or double<br />
short to int, long, float, or double<br />
char to int, long, float, or double<br />
int to long, float, or double<br />
long to float or double<br />
float to double</p>
<p>No pierden información</p>
<p><pre class="brush: java;">
class Test {
   public static void main(String[] args) {
      int big = 1234567890;
      float approx = big;
      System.out.println(big - (int)approx);
   }
}
</pre></p>
<p>Consola:</p>
<p><pre class="brush: java;">
-46
</pre></p>
<p>Indica la información que se ha perdido durante la conversión de tipos, pero porque el tipo float no es preciso con 9 digitos.</p>
<h2>Narrowing</h2>
<p>Las 23 siguientes conversiones de tipos primitivos son llamados &#8216;narrowing primitive conversions&#8217;:</p>
<p>byte to char<br />
short to byte or char<br />
char to byte or short<br />
int to byte, short, or char<br />
long to byte, short, char, or int<br />
float to byte, short, char, int, or long<br />
double to byte, short, char, int, long, or float</p>
<p>Se pierde valor o precision.</p>
<h2>Autoboxing</h2>
<p>Para insertar un <em>int </em>en una colección, lo que se hace automaticamente es:</p>
<p>1.- BOX guardar la variable en una clase que la envuelva(wrapper), en este caso Integer.<br />
2.- se guarda en la collection.<br />
3.- cuando quieras recoger el dato se hace UNBOX del Integer usando intValue(), te devuelve en int.</p>
<h2>Varargs</h2>
<p style="text-align:justify;">Hay veces que necesitas enviar a un metodo, muchas instancias de un mismo objeto. Pero en tiempo de compilacion no sabes cuantas. En vez de enviar un array o una <em>collection</em>, puedes usar: <em>&#8216;variable arity parameters&#8217;</em> ó como se les conoce formalmente: &#8216;<a href="http://java.sun.com/developer/JDCTechTips/2005/tt0104.html" target="_blank"><em>varargs</em></a>&#8216;.</p>
<p><pre class="brush: java;">
class VarGreeter {
   public static void printGreeting(String... names) {
      for (String n : names) {
        System.out.println(&quot;Hello &quot; + n + &quot;. &quot;);
      }
   }

   public static void main(String[] args) {
      printGreeting(&quot;Paul&quot;, &quot;Sue&quot;);
   }
}
</pre></p>
<h2>Sobrecargando  Widening, Boxing, Varargs</h2>
<p style="text-align:center;"><strong>W -&gt; B -&gt; V</strong><br />
(WB: NO)<br />
(BW: SI)<br />
(VW, VB: SI)</p>
<p>1. Widening wins over boxing and Varargs<br />
2. Boxing wins over Varargs<br />
3. Widening of reference variable depends on inheritance(so, Integer cannot be widened to Long. But, Integer widened to Number).<br />
4. Widen and boxing is not possible<br />
5. Boxing and widening is possible<br />
6. Varargs can be combined with either boxing or widening</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/prietopa.wordpress.com/190/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/prietopa.wordpress.com/190/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/prietopa.wordpress.com/190/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/prietopa.wordpress.com/190/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/prietopa.wordpress.com/190/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/prietopa.wordpress.com/190/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/prietopa.wordpress.com/190/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/prietopa.wordpress.com/190/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/prietopa.wordpress.com/190/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/prietopa.wordpress.com/190/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/prietopa.wordpress.com/190/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/prietopa.wordpress.com/190/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/prietopa.wordpress.com/190/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/prietopa.wordpress.com/190/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=prietopa.wordpress.com&amp;blog=6212784&amp;post=190&amp;subd=prietopa&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://prietopa.wordpress.com/2010/02/12/sobrecargando-widening-boxing-varargs/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<georss:point>40.406683 -3.628032</georss:point>
		<geo:lat>40.406683</geo:lat>
		<geo:long>-3.628032</geo:long>
		<media:content url="http://1.gravatar.com/avatar/5c51da68f3f1b191f8fe57cb4ed06186?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">prietopa</media:title>
		</media:content>
	</item>
	</channel>
</rss>
