Blog

Ejercicios con listas en Java

Aquí tenéis una propuesta de ejercicios con listas en Java para practicar lo explicado en el post de listas. Hay varias soluciones posibles para resolver un mismo problema, unas más eficientes que otras. Aquí podéis ver una solución posible para cada ejercicio propuesto.

Ejercicio 1: ListaNumerosDivisiblesPorNum

Enunciado:

Crea una lista de todos los números del 1 a 100 que sean divisibles por un número que introduzca el usuario. Este número tiene que estar comprendido entre 2 y 7. Pinta la lista por pantalla.

Sigue leyendo Ejercicios con listas en Java

La colección Mapas en Java

Otro tipo de colección muy interesante son los Mapas. Los mapas son colecciones de parejas clave-valor. Podría decirse que son como los arrays pero en lugar de usar un índice consecutivo que marca la posición del elemento en el array, vamos a utilizar una clave asociada a cada elemento.

La clase HashMap

La clase HashMap tiene la siguiente sintaxis:

HashMap<tipo clave,tipo de elemento>nombreDelMap= new HashMap<>();

Para trabajar con mapas vamos a utilizar la clase HashMap. Practiquemos con ella en la siguiente actividad:

Sigue leyendo La colección Mapas en Java

Listas en Java: tipo Set

En el post de Colecciones, mencionaba dos tipos de listas con las que podemos trabajar en Java: List y Set. En un post anterior me centraba en las listas de tipo List y ahora lo haré en las tipo Set, que a diferencia de las anteriores, no admiten duplicados.

La clase HashSet

Las listas tipo Set, las manejaremos con la clase HashSet. Esta clase funciona de manera muy parecida a la clase ArrayList, tienen muchos métodos iguales. Por ello, en la actividad siguiente para practicar con esta clase, me centraré en las diferencias de la clase HashSet con la clase ArrayList, vista previamente.

Sigue leyendo Listas en Java: tipo Set

Listas en Java: tipo List

Cuando en el post de Colecciones, hablaba de las listas en Java, mencionaba dos tipos de listas: List y Set. Ahora vamos a centrarnos en las listas de tipo List que manejaremos con la clase ArrayList.

La clase ArrayList

La sintaxis de la declaración de una de estas lista con la clase ArrayList es la siguiente:

ArrayList<tipo de elemento> nombreDeLaLista = new ArrayList< > ;

Vamos a verlo con un ejemplo práctico.

Sigue leyendo Listas en Java: tipo List

Colecciones en Java

En un post anterior habíamos visto los Arrays que nos obligaban a manejar un número fijo de elementos. Se inicializan con una dimensión fija que luego no podemos modificar durante la ejecución del programa.

Java proporciona otro tipo de Clases más flexibles y con ventajas sobre los arrays que son las Colecciones. Con estas vamos a poder trabajar, abstrayéndonos del índice y manejando un número de elementos variable durante la ejecución del programa.

Hay varias clases interesantes para trabajar con colecciones y todas extienden de la clase padre Collection.

Sigue leyendo Colecciones en Java

Hadoop

Hadoop es un ecosistema, es decir, un conjunto de componentes que implementan las distintas funciones necesarias para trabajar en entornos Big Data. Esta pensado para trabajar con Clusters de ordenadores de bajo coste. Y es un proyecto de la fundación Apache, por lo que cuenta con una licencia de software libre, lo que significa que cualquiera puede usarlo sin tener que pagar por ello.

Hay dos componentes fundamentales en el ecosistema Hadoop:

  • El sistema de ficheros distribuidos HDFS (Hadoop Distributed File System): Basado en la Big Table de Google que fue el primer sistema de ficheros distribuidos para trabajar con Big Data. Es el sistema de ficheros para trabajar con los ordenadores del clusters, realizando todas las funciones clásicas de un sistema de ficheros: guardar datos, localizar y acceder a ellos.
  • El sistema de procesamiento MapReduce: Es el sistema para procesar los datos en el Cluster, que también está tomado de Google, quien lo desarrollo para procesar la información de las distintas páginas web que recogía para las búsquedas.

La clave del éxito de Hadoop es que divide el almacenamiento de los datos y el trabajo de procesamiento entre los distintos ordenadores del cluster, realizando varias operaciones en paralelo, pudiendo así manejar muchos datos en menor tiempo.

Sigue leyendo Hadoop

Arquitectura Big Data

En posts anteriores he hablado de la aparición del Big Data y de las famosas Vs. De repente, se hizo necesario ser capaz de manejar muchísimos más datos con una afluencia muchísimo mayor. Las arquitecturas tradicionales no podían lidiar con esta nueva situación, y se desarrollaron las arquitecturas Big Data. Estas últimas enfocadas a trabajar con los datos en las nuevas condiciones.

Antes de la aparición del Big Data, con un buen servidor y un RAID de discos era suficiente para procesar y almacenar todos los datos que manejábamos. Esta arquitectura era además escalable y las necesidades de ampliación eran asumibles. Sin embargo, con la llegada del Big Data, y la gran cantidad y variedad de datos que tenemos que manejar y almacenar, las arquitecturas tradicionales basadas en un servidor resultan insuficientes. Se hace inviable procesar toda esta información en un único ordenador, y se desarrollan arquitectura Big Data basadas en Clusters de ordeanadores (un conjunto de ordenadores trabajando de manera coordinada para resolver una misma tarea).

Sigue leyendo Arquitectura Big Data

Ejercicios con Clases en Java

Aquí te dejo varios ejercicios con Clases en Java, para que puedas practicar lo aprendido en post anteriores. No explico la solución, sencillamente muestro una posible solución, pero mi recomendación es que intentes hacer los ejercicios sin mirar mi solución, y que la consultes sólo si te atascas.

Ejercicio 1

Crea una clase llamada Pais.

La clase debe tener los siguientes parámetros (recuerda que los parámetros deben ser declarados como privados por cuestiones de seguridad):

Sigue leyendo Ejercicios con Clases en Java

El Polimorfismo

El polimorfismo hace referencia a la capacidad de que objetos de diferentes clases, respondan de manera diferente a un mismo método. En Java, esto se consigue mediante la herencia y las interfaces, posibilitando que distintas clases implementen un mismo método de formas distintas, ajustándolo a sus necesidades.

En el polimorfismo por herencia, las distintas subclases implementan un método de la superclase de distintas maneras, ajustándolo a las necesidades específicas de la subclase en cuestión.

Actividad: Practicando con el polimorfismo

  1. Abrimos un nuevo proyecto de Java en nuestro IDE de trabajo.
  2. Primero definimos la superclase: Animal
class Animal{
    public void comer() {
        System.out.println("El animal se alimenta");
    }
}
Sigue leyendo El Polimorfismo

Las Clases abstractas y los interfaces

Las Clases abstractas y los interfaces son mecanismos que nos ayudan a definir estructuras abstractas, que son especificadas en las clases que las implementan de acuerdo a sus necesidades. Esto habilita al programador de Java a definir un grado de abstracción en sus desarrollos, posibilitando una programación más estructurada y modular, favoreciendo la reutilización del código.

Clases abstractas

Las Clases abstractas nos permiten un mayor nivel de abstracción al definir la estructura de los objetos de nuestro programa. Podemos indicar solamente que comportamiento hay que definir, pero no indicar como. En la práctica esto se traduce en declarar un método, pero no implementarlo. Esto lo indicamos empleando el modificador abstract, que se incluirá tanto en la firma del método como de la Clase que lo contiene.

Sigue leyendo Las Clases abstractas y los interfaces