Este documento describe las principales mejoras introducidas en Java entre las versiones 5 y 7, incluyendo mejoras menores, la introducción de la genericidad, el bucle for-each, boxing y unboxing automático, enumeraciones, parámetros variables y mejoras específicas del JDK 1.6.
Este documento presenta el objetivo de graficar y analizar conceptos de lógica difusa como conjuntos difusos, funciones de pertenencia, operaciones unarias y binarias, y reglas de inferencia. Se detalla el uso de MatLab para representar la interpretación de Kosko de conjuntos difusos, graficar tipos de funciones de pertenencia, extraer características de conjuntos difusos, y modelar sistemas de control basados en lógica difusa. El documento proporciona ejemplos de código de MatLab para ilustrar
Este documento presenta una introducción a Scala, un lenguaje de programación funcional y orientado a objetos creado en 2003 por Martin Odersky. Scala compila a la máquina virtual de Java y tiene influencias de lenguajes como Java y Haskell. El documento describe características clave de Scala como su tipado estático, inferencia de tipos, sintaxis, objetos, clases, herencia, estructuras de control y funciones.
Este documento presenta los objetivos y procedimientos de un laboratorio sobre sistemas de control basados en lógica difusa. Los estudiantes aprenderán a modelar conceptos difusos como conjuntos difusos, funciones de pertenencia, operaciones unarias y binarias, reglas de inferencia difusa y modelado de sistemas de control difusos usando Matlab. El informe final debe incluir resultados, imágenes y códigos comentados demostrando la comprensión de estos conceptos.
Problema de la ocho reinas. Implementación en Prolog.Mayra Villanueva
Este documento presenta el problema de las ocho reinas en ajedrez y su implementación en Prolog. Brevemente describe el problema, que consiste en colocar 8 reinas en un tablero de ajedrez de manera que ninguna esté amenazando a otra. Luego introduce conceptos clave como backtracking y búsqueda en profundidad que son utilizados para desarrollar un algoritmo y programa en Prolog que encuentre todas las posibles soluciones al problema de colocar N reinas en un tablero de ajedrez de dimensión N.
Este documento presenta el plan de estudios de un curso de 14 semanas sobre sistemas inteligentes y redes neuronales. El curso cubre temas como introducción a la inteligencia artificial, redes neuronales artificiales, lógica difusa y aplicaciones de control difuso, evaluando el aprendizaje a través de prácticas calificadas, exámenes y proyectos de laboratorio.
Este documento resume la historia y características principales de Java. Comenzó en 1991 como un proyecto llamado Green para aplicaciones de televisión interactivas. Fue lanzado oficialmente en 1995 por Sun Microsystems como un lenguaje orientado a objetos multiplataforma diseñado para "escribir una vez y ejecutar en cualquier lugar". Java ha influido en muchos otros lenguajes y tiene una amplia API estándar para varias tareas.
Este documento presenta una introducción a Scala. Scala es un lenguaje de programación funcional y orientado a objetos creado en 2003 por Martin Odersky que compila a la máquina virtual de Java. El documento describe características clave de Scala como su tipado estático, influencias de Java y Haskell, ecosistema y herramientas, y proporciona ejemplos básicos de código Scala.
Este documento presenta conceptos básicos de programación en Prolog, incluyendo hechos, reglas simples y con variables, unificación y listas. Se definen relaciones familiares como progenitor y se deduce madre usando reglas. También se explican listas, aritmética, predicados internos y ejemplos de problemas comunes.
Este documento presenta el objetivo de graficar y analizar conceptos de lógica difusa como conjuntos difusos, funciones de pertenencia, operaciones unarias y binarias, y reglas de inferencia. Se detalla el uso de MatLab para representar la interpretación de Kosko de conjuntos difusos, graficar tipos de funciones de pertenencia, extraer características de conjuntos difusos, y modelar sistemas de control basados en lógica difusa. El documento proporciona ejemplos de código de MatLab para ilustrar
Este documento presenta una introducción a Scala, un lenguaje de programación funcional y orientado a objetos creado en 2003 por Martin Odersky. Scala compila a la máquina virtual de Java y tiene influencias de lenguajes como Java y Haskell. El documento describe características clave de Scala como su tipado estático, inferencia de tipos, sintaxis, objetos, clases, herencia, estructuras de control y funciones.
Este documento presenta los objetivos y procedimientos de un laboratorio sobre sistemas de control basados en lógica difusa. Los estudiantes aprenderán a modelar conceptos difusos como conjuntos difusos, funciones de pertenencia, operaciones unarias y binarias, reglas de inferencia difusa y modelado de sistemas de control difusos usando Matlab. El informe final debe incluir resultados, imágenes y códigos comentados demostrando la comprensión de estos conceptos.
Problema de la ocho reinas. Implementación en Prolog.Mayra Villanueva
Este documento presenta el problema de las ocho reinas en ajedrez y su implementación en Prolog. Brevemente describe el problema, que consiste en colocar 8 reinas en un tablero de ajedrez de manera que ninguna esté amenazando a otra. Luego introduce conceptos clave como backtracking y búsqueda en profundidad que son utilizados para desarrollar un algoritmo y programa en Prolog que encuentre todas las posibles soluciones al problema de colocar N reinas en un tablero de ajedrez de dimensión N.
Este documento presenta el plan de estudios de un curso de 14 semanas sobre sistemas inteligentes y redes neuronales. El curso cubre temas como introducción a la inteligencia artificial, redes neuronales artificiales, lógica difusa y aplicaciones de control difuso, evaluando el aprendizaje a través de prácticas calificadas, exámenes y proyectos de laboratorio.
Este documento resume la historia y características principales de Java. Comenzó en 1991 como un proyecto llamado Green para aplicaciones de televisión interactivas. Fue lanzado oficialmente en 1995 por Sun Microsystems como un lenguaje orientado a objetos multiplataforma diseñado para "escribir una vez y ejecutar en cualquier lugar". Java ha influido en muchos otros lenguajes y tiene una amplia API estándar para varias tareas.
Este documento presenta una introducción a Scala. Scala es un lenguaje de programación funcional y orientado a objetos creado en 2003 por Martin Odersky que compila a la máquina virtual de Java. El documento describe características clave de Scala como su tipado estático, influencias de Java y Haskell, ecosistema y herramientas, y proporciona ejemplos básicos de código Scala.
Este documento presenta conceptos básicos de programación en Prolog, incluyendo hechos, reglas simples y con variables, unificación y listas. Se definen relaciones familiares como progenitor y se deduce madre usando reglas. También se explican listas, aritmética, predicados internos y ejemplos de problemas comunes.
Scala es un lenguaje que combina la programación orientada a objetos y el paradigma imperativo, con el paradigma funcional. En esta charla nos centraremos primero en ver las características OO de Scala comparándolas con Java y luego veremos algunas de las características "funcionales" del lenguaje.
1. El documento describe conceptos básicos de programación orientada a objetos (POO) en Python.
2. Explica que la POO modela entidades del mundo real como clases y objetos, y que un programa consiste en interacciones entre objetos.
3. También cubre temas como clases, objetos, métodos, herencia e instanciación de clases en Python.
Unidad5 estructuras basicas de datos en lenguaje javaGente de Alicante
Este documento describe las estructuras básicas de datos en Java, incluyendo arrays unidimensionales y multidimensionales. Explica cómo declarar e inicializar arrays, asignar valores a elementos de array, y obtener la longitud de un array. También cubre la clase Arrays, la cual contiene métodos como fill para rellenar arrays, equals para comparar arrays, y sort para ordenar arrays.
Java intenta abarcar diferentes dominios como aplicaciones del lado del servidor, del lado del cliente, para teléfonos móviles, programación científica, software de escritorio y más. Permite efectuar trabajos para diferentes aplicaciones gracias a su diseño orientado a objetos y su máquina virtual Java.
Este documento presenta un laboratorio sobre sistemas difusos implementados en MatLab. Explica conceptos básicos de sistemas difusos y cómo modelar un sistema de control difuso de lavadora usando MatLab. Incluye pasos para definir reglas y funciones de pertenencia difusas, y muestra ejemplos de tareas de laboratorio sobre sistemas difusos para control de frenado automotriz, ventilación y encendido de motor.
Mi presentación en el ITLA Tech Day 2018 #ITLATechDay #EncuentrosUniversitariosJava2018 #Java
@ ITLA Recinto Santiago, Santiago de los caballeros. 15 consejos prácticos sobre características fundamentales que todo programador Java debe tener en cuenta.
Este laboratorio tiene como objetivo aplicar conceptos de lógica difusa utilizando MatLab, incluyendo graficar interpretaciones de conjuntos difusos, funciones de pertenencia, características y operaciones unarias y binarias de conjuntos difusos, modelar reglas de inferencia difusa y sistemas de control basados en lógica difusa. El laboratorio propone ejercicios y un cuestionario para desarrollar programas en MatLab que implementen estas aplicaciones de lógica difusa.
Este laboratorio tiene como objetivo:
1) Graficar la interpretación de Kosko de los conjuntos difusos y las funciones de pertenencia.
2) Extraer características y realizar operaciones unarias y binarias en conjuntos difusos usando MatLab.
3) Analizar reglas de inferencia difusa y modelar sistemas de control basados en lógica difusa.
El laboratorio involucra el desarrollo de funciones en MatLab para graficar conceptos difusos y aplicar operaciones matemáticas en ellos.
Jyoc java-cap10 clases complementarias y enumeradosJyoc X
Cursos gratis de programación en Java. Clases complementarias: Math, Wrappers, Date. Orientado a Grado, DAM y DAW. Otros cursos disponibles para Android, Swift, Base de datos, javascript, servicios y procesos...
El documento describe la toolbox de redes neuronales de MatLab. Explica cómo crear diferentes tipos de redes neuronales, incluidas redes estáticas y dinámicas. También describe las funciones disponibles para inicializar, entrenar y evaluar el rendimiento de las redes, así como para manipular los pesos y umbrales de las redes neuronales. Finalmente, incluye ejemplos de cómo utilizar la toolbox para tareas de clasificación y predicción.
Esta es la presentación utilizada en curso de introducción a Python para alumnos de Ingeniería, se asume que el lector tiene ya algo de experiencia en programación.
TensorFlow es una librería de código abierto desarrollado por Google para cálculo numérico, usando como forma de programación grafos de flujo de datos. Los nodos en el grafo representan operaciones matemáticas, mientras que las conexiones o links del grafo representan los conjuntos de datos multidimensionales (tensores).
KERAS
La estructura de datos central de Keras es un modelo, una forma de organizar capas. El tipo de modelo más simple es el Sequentia, una pila lineal de capas. Para arquitecturas
más complejas, debe utilizar la API funcional de Keras , que permite crear gráficos de capas arbitrarios.
Este documento presenta el objetivo de graficar y analizar conceptos de sistemas difusos como las funciones de pertenencia, operaciones en conjuntos difusos, reglas de inferencia difusa y modelado de sistemas de control basados en lógica difusa usando MatLab. El laboratorio cubrirá la interpretación de Kosko de conjuntos difusos, tipos de funciones de pertenencia, características y operaciones en conjuntos difusos, relaciones entre conjuntos difusos, reglas de inferencia difusa y modelado de sistemas de control difusos
Este documento presenta un ejercicio sobre el uso de semáforos para lograr la exclusión mutua entre hilos en Java. Se compara el comportamiento de dos códigos, uno que usa primitivas de Java como sleep() y otro que implementa semáforos de la clase Semaphore. El objetivo es entender cómo los semáforos permiten que solo un hilo acceda a la vez a un recurso compartido bloqueando y desbloqueando hilos a través de los métodos acquire() y release().
Este documento presenta un resumen de un curso básico de Python dividido en 5 días. El día 1 cubre la instalación de Python en Linux y el entorno de consola. El día 2 trata sobre los tipos de datos básicos como cadenas y estructuras de control. El día 3 cubre manejo de errores y funciones. Los días 4 y 5 tratan sobre objetos, conexiones a bases de datos, librerías y parámetros entre scripts.
El documento habla sobre las funciones/métodos en Java. Explica que son trozos de código que encapsulan cierta funcionalidad y pueden tener datos de entrada y salida. Compara las funciones con las funciones matemáticas y muestra un ejemplo de cómo se vería una función matemática como una función en Java.
Programación en Prolog para Inteligencia ArtificialEgdares Futch H.
Este documento presenta una introducción a la programación en Prolog para la inteligencia artificial. Prolog es un lenguaje lógico declarativo que se usa comúnmente en IA debido a su capacidad para representar y manipular conocimiento. El documento describe algunas características clave de Prolog como la unificación, las cláusulas, las listas y la reevaluación, y presenta ejemplos de aplicaciones como sistemas expertos y procesamiento de lenguaje natural.
El documento describe conceptos básicos de Java como la máquina virtual de Java (JVM), programación orientada a objetos, manejo de archivos, applets, threads y más. Explica que la JVM se encuentra en cualquier equipo que navega en Internet y tiene un recolector de basura que libera memoria de forma automática, y que Java permite desarrollar programas multihilo.
1) El documento habla sobre la herencia en Java. La herencia permite que una clase herede atributos y métodos de otra clase llamada superclase.
2) Las subclases heredan la funcionalidad de la clase padre y pueden extenderla redefiniendo métodos.
3) Java solo permite herencia simple, es decir, una clase puede heredar de una única superclase.
Utp ia_sl2 patrones de aprendizaje de las rnajcbenitezp
Este documento describe los patrones de aprendizaje de las redes neuronales artificiales (RNA). Explica que los patrones de entrenamiento son conjuntos de entradas y salidas deseadas usadas para entrenar una RNA. Muestra cómo graficar patrones de entrenamiento usando la función PLOTPV en MATLAB. Finalmente, asigna una tarea para graficar y analizar varios patrones de entrenamiento y verificar si son linealmente separables.
1) Java se creó en 1991 como parte de un proyecto de Sun para desarrollo de software para electrónica de consumo. 2) Desde un inicio se diseñó para ser multiplataforma y ejecutarse en diferentes CPUs, lo que le dio gran portabilidad. 3) Java ha tenido varias versiones importantes como JDK 1.0, 1.1, J2SE 1.2 que agregó nuevas características.
Este documento proporciona una descripción general de las principales características introducidas en Java 7 y Java 8. Comienza con una línea de tiempo que resume las principales características de Java 7 como autoclosing, Fork/Join framework y excepciones multi-catch. Luego, describe las características clave de Java 8 como expresiones lambda, interfaces con métodos predeterminados y estáticos, referencias de métodos, API de colecciones y API de fecha y hora. Finalmente, anticipa algunas de las características planificadas para Java 9 como la modularización, API
Scala es un lenguaje que combina la programación orientada a objetos y el paradigma imperativo, con el paradigma funcional. En esta charla nos centraremos primero en ver las características OO de Scala comparándolas con Java y luego veremos algunas de las características "funcionales" del lenguaje.
1. El documento describe conceptos básicos de programación orientada a objetos (POO) en Python.
2. Explica que la POO modela entidades del mundo real como clases y objetos, y que un programa consiste en interacciones entre objetos.
3. También cubre temas como clases, objetos, métodos, herencia e instanciación de clases en Python.
Unidad5 estructuras basicas de datos en lenguaje javaGente de Alicante
Este documento describe las estructuras básicas de datos en Java, incluyendo arrays unidimensionales y multidimensionales. Explica cómo declarar e inicializar arrays, asignar valores a elementos de array, y obtener la longitud de un array. También cubre la clase Arrays, la cual contiene métodos como fill para rellenar arrays, equals para comparar arrays, y sort para ordenar arrays.
Java intenta abarcar diferentes dominios como aplicaciones del lado del servidor, del lado del cliente, para teléfonos móviles, programación científica, software de escritorio y más. Permite efectuar trabajos para diferentes aplicaciones gracias a su diseño orientado a objetos y su máquina virtual Java.
Este documento presenta un laboratorio sobre sistemas difusos implementados en MatLab. Explica conceptos básicos de sistemas difusos y cómo modelar un sistema de control difuso de lavadora usando MatLab. Incluye pasos para definir reglas y funciones de pertenencia difusas, y muestra ejemplos de tareas de laboratorio sobre sistemas difusos para control de frenado automotriz, ventilación y encendido de motor.
Mi presentación en el ITLA Tech Day 2018 #ITLATechDay #EncuentrosUniversitariosJava2018 #Java
@ ITLA Recinto Santiago, Santiago de los caballeros. 15 consejos prácticos sobre características fundamentales que todo programador Java debe tener en cuenta.
Este laboratorio tiene como objetivo aplicar conceptos de lógica difusa utilizando MatLab, incluyendo graficar interpretaciones de conjuntos difusos, funciones de pertenencia, características y operaciones unarias y binarias de conjuntos difusos, modelar reglas de inferencia difusa y sistemas de control basados en lógica difusa. El laboratorio propone ejercicios y un cuestionario para desarrollar programas en MatLab que implementen estas aplicaciones de lógica difusa.
Este laboratorio tiene como objetivo:
1) Graficar la interpretación de Kosko de los conjuntos difusos y las funciones de pertenencia.
2) Extraer características y realizar operaciones unarias y binarias en conjuntos difusos usando MatLab.
3) Analizar reglas de inferencia difusa y modelar sistemas de control basados en lógica difusa.
El laboratorio involucra el desarrollo de funciones en MatLab para graficar conceptos difusos y aplicar operaciones matemáticas en ellos.
Jyoc java-cap10 clases complementarias y enumeradosJyoc X
Cursos gratis de programación en Java. Clases complementarias: Math, Wrappers, Date. Orientado a Grado, DAM y DAW. Otros cursos disponibles para Android, Swift, Base de datos, javascript, servicios y procesos...
El documento describe la toolbox de redes neuronales de MatLab. Explica cómo crear diferentes tipos de redes neuronales, incluidas redes estáticas y dinámicas. También describe las funciones disponibles para inicializar, entrenar y evaluar el rendimiento de las redes, así como para manipular los pesos y umbrales de las redes neuronales. Finalmente, incluye ejemplos de cómo utilizar la toolbox para tareas de clasificación y predicción.
Esta es la presentación utilizada en curso de introducción a Python para alumnos de Ingeniería, se asume que el lector tiene ya algo de experiencia en programación.
TensorFlow es una librería de código abierto desarrollado por Google para cálculo numérico, usando como forma de programación grafos de flujo de datos. Los nodos en el grafo representan operaciones matemáticas, mientras que las conexiones o links del grafo representan los conjuntos de datos multidimensionales (tensores).
KERAS
La estructura de datos central de Keras es un modelo, una forma de organizar capas. El tipo de modelo más simple es el Sequentia, una pila lineal de capas. Para arquitecturas
más complejas, debe utilizar la API funcional de Keras , que permite crear gráficos de capas arbitrarios.
Este documento presenta el objetivo de graficar y analizar conceptos de sistemas difusos como las funciones de pertenencia, operaciones en conjuntos difusos, reglas de inferencia difusa y modelado de sistemas de control basados en lógica difusa usando MatLab. El laboratorio cubrirá la interpretación de Kosko de conjuntos difusos, tipos de funciones de pertenencia, características y operaciones en conjuntos difusos, relaciones entre conjuntos difusos, reglas de inferencia difusa y modelado de sistemas de control difusos
Este documento presenta un ejercicio sobre el uso de semáforos para lograr la exclusión mutua entre hilos en Java. Se compara el comportamiento de dos códigos, uno que usa primitivas de Java como sleep() y otro que implementa semáforos de la clase Semaphore. El objetivo es entender cómo los semáforos permiten que solo un hilo acceda a la vez a un recurso compartido bloqueando y desbloqueando hilos a través de los métodos acquire() y release().
Este documento presenta un resumen de un curso básico de Python dividido en 5 días. El día 1 cubre la instalación de Python en Linux y el entorno de consola. El día 2 trata sobre los tipos de datos básicos como cadenas y estructuras de control. El día 3 cubre manejo de errores y funciones. Los días 4 y 5 tratan sobre objetos, conexiones a bases de datos, librerías y parámetros entre scripts.
El documento habla sobre las funciones/métodos en Java. Explica que son trozos de código que encapsulan cierta funcionalidad y pueden tener datos de entrada y salida. Compara las funciones con las funciones matemáticas y muestra un ejemplo de cómo se vería una función matemática como una función en Java.
Programación en Prolog para Inteligencia ArtificialEgdares Futch H.
Este documento presenta una introducción a la programación en Prolog para la inteligencia artificial. Prolog es un lenguaje lógico declarativo que se usa comúnmente en IA debido a su capacidad para representar y manipular conocimiento. El documento describe algunas características clave de Prolog como la unificación, las cláusulas, las listas y la reevaluación, y presenta ejemplos de aplicaciones como sistemas expertos y procesamiento de lenguaje natural.
El documento describe conceptos básicos de Java como la máquina virtual de Java (JVM), programación orientada a objetos, manejo de archivos, applets, threads y más. Explica que la JVM se encuentra en cualquier equipo que navega en Internet y tiene un recolector de basura que libera memoria de forma automática, y que Java permite desarrollar programas multihilo.
1) El documento habla sobre la herencia en Java. La herencia permite que una clase herede atributos y métodos de otra clase llamada superclase.
2) Las subclases heredan la funcionalidad de la clase padre y pueden extenderla redefiniendo métodos.
3) Java solo permite herencia simple, es decir, una clase puede heredar de una única superclase.
Utp ia_sl2 patrones de aprendizaje de las rnajcbenitezp
Este documento describe los patrones de aprendizaje de las redes neuronales artificiales (RNA). Explica que los patrones de entrenamiento son conjuntos de entradas y salidas deseadas usadas para entrenar una RNA. Muestra cómo graficar patrones de entrenamiento usando la función PLOTPV en MATLAB. Finalmente, asigna una tarea para graficar y analizar varios patrones de entrenamiento y verificar si son linealmente separables.
1) Java se creó en 1991 como parte de un proyecto de Sun para desarrollo de software para electrónica de consumo. 2) Desde un inicio se diseñó para ser multiplataforma y ejecutarse en diferentes CPUs, lo que le dio gran portabilidad. 3) Java ha tenido varias versiones importantes como JDK 1.0, 1.1, J2SE 1.2 que agregó nuevas características.
Este documento proporciona una descripción general de las principales características introducidas en Java 7 y Java 8. Comienza con una línea de tiempo que resume las principales características de Java 7 como autoclosing, Fork/Join framework y excepciones multi-catch. Luego, describe las características clave de Java 8 como expresiones lambda, interfaces con métodos predeterminados y estáticos, referencias de métodos, API de colecciones y API de fecha y hora. Finalmente, anticipa algunas de las características planificadas para Java 9 como la modularización, API
Ruby y Java son lenguajes orientados a objetos con características similares como el recolector de basura y herramientas de documentación, pero Ruby es un lenguaje interpretado de tipado dinámico que permite mayor flexibilidad al permitir cambios de tipo en tiempo de ejecución y tratar todo como objetos.
El documento describe las características esenciales de la programación orientada a objetos. Explica conceptos clave como la abstracción, las clases y objetos, atributos e instancias, métodos de instancia y clase, encapsulación, herencia y constructores. También presenta la sintaxis básica de Java para declarar clases, crear instancias de objetos y acceder a sus atributos y métodos.
Las variables son:
- sum: Es una variable local de tipo entero (int) dentro del método main.
- current: Es una variable local de tipo entero (int) dentro del bucle for.
Ambas variables tienen ámbito local, es decir, sólo son accesibles dentro del método main donde están definidas.
Este documento explica los argumentos variables (VarArgs) en Java. VarArgs permite que un método acepte un número indefinido de argumentos. Antes de Java 5, se usaban arreglos para pasar múltiples argumentos. Ahora, se puede declarar el último parámetro de un método con tres puntos (...) para indicar VarArgs. El compilador convierte automáticamente las llamadas de método con múltiples argumentos en una llamada que pasa un arreglo. Sin embargo, existen algunas limitaciones y problemas de ambigüedad con VarArgs.
Fundamentos de Java / 15 consejos prácticos sobre Java que cambiarán la for...Eudris Cabrera
Mi presentación en el #JavaDaySTI2018 sobre consejos prácticos que nos ayudarán a desarrollar software con menos bug en Java @JavaDominicano @ComitesISC
El documento introduce el lenguaje de programación Java, discutiendo brevemente su historia y desarrollo, su sintaxis y componentes básicos como clases, paquetes y la máquina virtual Java. También presenta algunas de las herramientas de desarrollo más populares como NetBeans, permitiendo a los programadores crear y ejecutar aplicaciones Java.
El documento contiene preguntas sobre conceptos básicos de Java como clases, paquetes, herencia, bucles, sentencias de control, E/S y streams. También incluye ejercicios de completar y verdadero/falso sobre estas temáticas.
El documento contiene preguntas sobre conceptos básicos de Java como clases, paquetes, herencia, bucles, sentencias de control e input/output. También incluye preguntas de verdadero/falso y opción múltiple sobre estas temáticas de programación orientada a objetos en Java.
1) El documento contiene las preguntas y respuestas de un cuestionario sobre conceptos básicos de programación en Java como clases, paquetes, bucles, comentarios e identificadores.
2) Se definen conceptos como clase, paquete, bucles, tipos de comentarios e identificadores en Java.
3) El cuestionario contiene preguntas sobre estas definiciones y temas relacionados con la entrada y salida en Java.
1) El documento contiene las preguntas y respuestas de un cuestionario sobre conceptos básicos de programación en Java como clases, paquetes, bucles, comentarios e identificadores.
2) Se definen conceptos como clase, paquete, bucles, tipos de comentarios e identificadores en Java.
3) El cuestionario contiene preguntas sobre estas definiciones y temas relacionados con la entrada y salida de datos, y la ejecución de programas en Java.
Este documento contiene varias preguntas sobre conceptos básicos de Java como clases, paquetes, herencia, bucles, sentencias de control e input/output. También incluye preguntas de verdadero/falso y opción múltiple sobre estas temáticas.
Este documento contiene varias preguntas sobre conceptos básicos de Java como clases, paquetes, herencia, bucles, sentencias de control y E/S. También incluye preguntas de verdadero/falso y opción múltiple sobre las clases FileInputStream, FileOutputStream y los flujos de entrada/salida en Java.
La tecnología Java es un lenguaje de programación orientado a objetos que se ejecuta en una máquina virtual, lo que permite que el código Java sea portable entre sistemas operativos. Java proporciona características como encapsulamiento, herencia, polimorfismo y manejo automático de memoria a través de un recolector de basura.
El documento habla sobre paquetes en Java. Los paquetes organizan grupos de clases relacionadas y resuelven conflictos de nombres. Para importar clases de un paquete se usa la palabra import. Los elementos de un paquete pueden ser públicos, protegidos o privados. El documento también cubre arreglos, arreglos multidimensionales y el manejo de excepciones en Java con try, catch y finally.
JRuby: Ruby en un mundo enterprise RubyConf Uruguay 2011Jano González
Este documento habla sobre JRuby, una implementación de Ruby que corre sobre la máquina virtual de Java. JRuby combina las ventajas de Ruby como lenguaje dinámico y orientado a objetos con las ventajas de Java como portabilidad, escalabilidad y soporte empresarial. El autor argumenta que JRuby puede usarse para simplificar aplicaciones Java complejas y aprovechar librerías de Java desde Ruby.
OCP, JSE 6 Programmer (1z0-851) - Guia practica 3 de 7(ap-is)Oscar V
Este documento presenta una guía práctica para la sección 3 del examen Oracle Certified Professional, Java SE 6 Programmer. Cubre el uso de APIs estándares de Java relacionadas con tipos primitivos, E/S de archivos, formateo de fechas, números y cadenas, y expresiones regulares. Explica las clases y métodos más importantes para trabajar con wrappers de tipos primitivos, leer y escribir archivos, formatear fechas usando locales, y parsear cadenas y streams usando expresiones regulares y formateo de cadenas.
Este documento describe los contenedores especiales en Java, incluyendo paquetes, implementaciones de colecciones como ArrayList y LinkedList, y el uso de hilos y sincronización. Explica cómo los paquetes agrupan clases y cómo importar paquetes. También cubre cómo crear hilos y sincronizar el acceso a recursos compartidos.
Similar a Programación III (Java) - 05 Genericos y Colecciones - java6-7 (20)
Este documento presenta varias técnicas y herramientas para mejorar la productividad en la oficina móvil y fija. Explica métodos como GTD, Pomodoro y Zen to Done para organizar tareas de manera efectiva. También revisa aplicaciones útiles como Trello, Evernote, Google Calendar y Keep para gestionar proyectos, notas, calendarios y listas de tareas. El objetivo es automatizar tareas, minimizar distracciones y enfocarse en actividades importantes para aumentar la eficiencia laboral.
Este documento presenta varias herramientas digitales para integrar la documentación entre la oficina fija y móvil. Se discuten Google Drive para almacenamiento colaborativo en la nube, Feedly para recibir información relevante, Pocket para organizar y almacenar enlaces, y Pushbullet para comunicación entre dispositivos. El taller concluye con una discusión sobre comunicación interna y una comunidad en Google+ para seguir compartiendo experiencias.
El papel de las tic en la construccióLa integración de recursos didácticos di...Andoni Eguíluz Morán
El papel de las tic en la construcción de una educación para todos - La integración de recursos didácticos digitales en entornos de aprendizaje inclusivos: beneficios para los niños y niñas con discapacidad intelectual
El documento discute la falta de profesionales en campos STEM y las barreras que enfrentan, especialmente las mujeres. Propone que la tecnología requiere la participación de hombres y mujeres y que los estereotipos alejan a muchos de estas carreras. Describe iniciativas como Trastea.club y Inspira para fomentar el interés de estudiantes, especialmente niñas, en STEM a través de talleres y referentes femeninos. Finalmente, enfatiza que se necesita más apoyo empresarial y programas de formación para abordar
Este documento presenta varias herramientas y técnicas para mejorar la productividad en la oficina móvil y fija, incluyendo aplicaciones para controlar el tiempo como Toggl, métodos como GTD y Pomodoro, y herramientas de gestión de tareas y calendario como Evernote, Google Calendar y Trello. Además, discute conceptos psicológicos de productividad como los Siete Hábitos de la Gente Altamente Efectiva y cómo evitar ladrones de tiempo. El objetivo general es automatizar tareas, minimizar errores
Este documento presenta información sobre los riesgos de seguridad en las TIC y buenas prácticas para un uso ético y seguro de la tecnología. Explica diversos tipos de amenazas como malware, phishing, ingeniería social, y vulnerabilidades. También cubre temas como privacidad en la web, cookies, redes sociales y riesgos emergentes como la nube y dispositivos móviles. Finalmente, ofrece consejos básicos como realizar copias de seguridad con encriptado y mantener actualizados los parches de seg
Este documento presenta una introducción a los conceptos de seguridad y ética en el uso de las TIC en el mundo educativo. Brevemente describe los principales riesgos como malware, phishing, vulnerabilidades, y ingeniería social; así como buenas prácticas como proteger contraseñas, cookies y privacidad en redes sociales. El objetivo es concientizar sobre los peligros crecientes en un mundo digital cada vez más interconectado.
Este documento presenta diversas herramientas digitales y redes sociales que pueden ser útiles en el ámbito educativo. Se describen marcadores sociales, blogs, wikis, Google Drive, documentos colaborativos y Twitter, entre otras. También se explican posibles usos educativos como la edición y publicación de contenidos, la evaluación y participación de estudiantes, y la comunicación y colaboración. Finalmente, se mencionan Google Apps for Education y aspectos legales relacionados con estas tecnologías.
Este documento presenta una propuesta de sesión sobre creación de contenidos digitales en el mundo educativo. La sesión incluye una introducción a Google Hangout, conceptos básicos sobre gráficos, sonido, vídeo y compresión digital, y ejercicios prácticos sobre infografías y presentaciones.
Este documento presenta tres medidas básicas de seguridad para prevenir ciberamenazas: 1) Entender los principales riesgos cibernéticos como malware, phishing, vulnerabilidades, y errores humanos; 2) Conocer y aplicar buenas prácticas de seguridad como usar contraseñas seguras y actualizaciones de software; 3) Desarrollar un manual de seguridad digital para proteger a una empresa. El documento enfatiza que aunque la seguridad completa no es posible, tomar medidas razonables puede reducir significativamente el ries
CYPED 2015 - Comunicación y Participación en Entornos DigitalesAndoni Eguíluz Morán
Este documento presenta varias herramientas digitales para la comunicación y participación en entornos educativos. Describe brevemente marcadores sociales, blogs, wikis, Google Drive, Twitter, redes sociales como Google+ y conferencias en línea como Hangouts. También cubre el uso de estas herramientas para gestionar tareas y evaluar la participación de los estudiantes. El documento propone varias prácticas para que los participantes exploren estas herramientas.
Este documento presenta una introducción a la identidad digital corporativa. Explica conceptos clave como identidad digital e identidad online. Luego, describe la importancia de la comunicación en redes sociales para las marcas y cómo construir valor. Finalmente, proporciona un marco de cuatro pasos (análisis, estrategia, ejecución y medición) para gestionar la identidad digital y reputación de una empresa.
Este documento presenta una introducción a la gamificación y los juegos serios. Explica brevemente la psicología del juego, diferentes tipos de jugadores, y cómo los elementos de los juegos pueden aplicarse a contextos no lúdicos. También describe ejemplos como los juegos educativos, de salud y para el cambio social, así como la distinción entre simuladores y juegos serios. El objetivo es dar una visión general de este tema y sus posibles aplicaciones para los negocios.
Este documento presenta JUnit y pruebas unitarias. Explica que JUnit es un framework para desarrollar pruebas unitarias de forma automática para aislar y probar cada parte del código. Detalla los pasos para crear una clase de pruebas, implementar métodos como setUp() y tearDown(), y definir métodos de prueba. También proporciona un ejemplo de una clase de prueba.
El documento trata sobre hilos (threads) en Java. Explica que un hilo es un flujo de ejecución independiente que puede ejecutarse en paralelo a otros. Detalla la clase Thread de Java y cómo crear e implementar hilos heredando de Thread o implementando la interfaz Runnable. También cubre conceptos como el ciclo de vida de los hilos y la sincronización.
Este documento describe varios componentes y contenedores de Swing. Explica los modelos de datos utilizados por componentes como JComboBox y JTable. También cubre temas como Look & Feel, dibujo en Swing, y el hilo de Swing.
Este documento describe la gestión de eventos con AWT/Swing en Java. Explica el modelo de eventos de Java, la jerarquía de clases de eventos, y cómo crear clases escuchadoras de eventos y asignarlas a fuentes de eventos para manejar acciones del usuario. También cubre temas como clases anónimas, adapters y el patrón Observer relacionado con la gestión de eventos.
Este documento trata sobre ventanas en Java. Explica la librería AWT y los componentes y contenedores básicos como Frame, Panel y Button. También cubre la creación de ventanas personalizadas, el uso de layouts para organizar los componentes, y presenta Swing como una alternativa mejorada a AWT.
En la ciudad de Pasto, estamos revolucionando el acceso a microcréditos y la formalización de microempresarios informales con nuestra aplicación CrediAvanza. Nuestro objetivo es empoderar a los emprendedores locales proporcionándoles una plataforma integral que facilite el acceso a servicios financieros y asesoría profesional.
Ofrecemos herramientas y metodologías para que las personas con ideas de negocio desarrollen un prototipo que pueda ser probado en un entorno real.
Cada miembro puede crear su perfil de acuerdo a sus intereses, habilidades y así montar sus proyectos de ideas de negocio, para recibir mentorías .
Programación III (Java) - 05 Genericos y Colecciones - java6-7
1. Mejoras Java 5-7 (Java SE7)
Mejoras más importantes
•Mejoras menores
•Genericidad
•Bucle for-each
•Boxing
•Enumeraciones
•Parámetros variables
•Importación estática
•Metadatos
•Mejoras específicas del JDK 1.6
•Más información
Programación III Tema 5 - Java 6
2. Mejoras menores Java 6
– Mejoras en el garbage collector
– Nueva clase StringBuilder (buffer de
caracteres)
– Mejora significativa de Java 2D, gestión de
imágenes y OpenGL.
– Mejora de gestión de imágenes jpeg
– Mejoras en algunas clases de la API (lang, util,
comunicaciones, seguridad y criptografía,
sonido...)
– Opciones adicionales de compilación, javadoc...
Programación III Tema 5 - Java 6
3. Mejoras menores Java SE7
– Literales binarios (0b0010...)
– Subrayados entre dígitos en literales numéricos
(1234_5678_9012_3456L) (no vale 3_.14)
• Como si no estuvieran, para mejorar legibilidad
– Strings en sentencias switch (String.equals)
– Mejoras en gestión del heap
– Más de una excepción en cada catch
catch (IOException|SQLException e) {
– try con recursos
try (java.io.BufferedWriter writer = ...) {
// Hace un close al final (sin poner finally)
} // Deben implementar java.lang.AutoCloseable
Programación III Tema 5 - Java 6
4. Genericidad (generics) (1/3)
• Problema
– Al trabajar con contenedores (Collection)
estamos obligados a hacer casting continuo:
static void quitaVacios(Collection c) {
for (Iterator i = c.iterator();
i.hasNext(); )
if (((String) i.next()).length() == 0)
i.remove();
}
– Esto es incómodo y también inseguro (puede
generar un error en ejecución)
Programación III Tema 5 - Java 6
5. Genericidad (2/3)
– La genericidad permite informar al compilador
del tipo de la colección, de modo que puede ser
chequeado en compilación, y evita el cast:
static void quitaV(Collection<String> c) {
for (Iterator<String> i = c.iterator();
i.hasNext(); )
if ((i.next()).length() == 0)
i.remove();
}
– El uso de la genericidad obliga a que todos los
elementos de la colección sean ahora de la clase
indicada entre < y > (String en el ejemplo)
– Similar al “template” de C++
Programación III Tema 5 - Java 6
6. Genericidad (3/3)
– Las colecciones (las vemos después) no son el
único uso de la genericidad, se pueden usar en
otros puntos (aunque programar nuevas clases
genéricas es complejo)
– La genericidad en Java 1.5 afecta a todas las
clases contenedoras, como List, Vector, Tree...
– Una clase puede ser genérica sobre un tipo...
• Vector<E> (ej. Vector<Integer>)
• ArrayList<E> (ej. ArrayList<Persona>)
– O sobre varios...
• HashMap<K,V> (ej.
HashMap<Integer,Persona>)
Programación III Tema 5 - Java 6
7. Mejoras Java 7 Genericidad
• Inferencia de tipos genéricos
Map<String, List<String>> myMap
= new HashMap<String, List<String>>();
// En Java SE 7 se puede poner el "diamond" <>:
Map<String, List<String>> myMap = new
HashMap<>();
Programación III Tema 5 - Java 6
8. Bucle for-each (1/2)
– Relacionado con las colecciones, se permite un
nuevo tipo de bucle. Para evitar la pesada
construcción:
for (Iterator i = palos.iterator();
i.hasNext();) {
Palo palo = (Palo) i.next();
...
}
– Se puede utilizar un nuevo tipo de for:
for (Palo palo: palos) {
...
}
Programación III Tema 5 - Java 6
9. Bucle for-each (2/2)
– El símbolo “:” se lee “en”
– Pueden anidarse bucles sin problema:
for (Palo p : listaPalos)
for (Numero n : listaNumeros)
baraja.add( new Carta(p,n) );
– Y la construcción es aplicable a arrays:
int sumaArray(int[] a) {
int res = 0;
for (int i : a)
res += i;
return res;
}
– En general, for-each puede utilizarse siempre que no se
modifica la colección según se recorre (para ese caso
hay que volver al esquema tradicional)
Programación III Tema 5 - Java 6
10. “Boxing”
– Donde se espere un objeto no se puede poner un
valor primitivo (p. ej. lista de enteros)
– Solución: wrappers (Integer en vez de int)
– Problema: código muy “sucio”:
LinkedList l = new LinkedList();
l.add( new Integer(i) );
...
int j = ((Integer) l.get(0)).intValue();
– Java 1.5 incorpora autoboxing (convertir
primitivo al wrapper) y unboxing (convertir el
wrapper a primitivo) de forma transparente:
l.add( i );
...
int j = l.get(0);
Programación III Tema 5 - Java 6
11. Enumeraciones (1/3)
– Java 1.4 no permite enumeraciones, lo que obliga a
utilizar constantes:
public static final int PRIMAVERA = 0;
public static final int VERANO = 1;
public static final int OTOÑO = 2;
public static final int INVIERNO = 3;
– Esto presenta múltiples problemas:
• No hay un tipo diferenciado (podría pasarse cualquier otro
entero por error)
• No hay nombres diferenciados (podrían confundirse con otros
nombres)
• No hay información (cada valor es un número, sin relación con
su “significado”)
– Los lenguajes modernos mejoran esto con las
enumeraciones, y Java las incorpora en su versión 1.5.
Programación III Tema 5 - Java 6
12. Enumeraciones (2/3)
– En Java 1.5 esta enumeración se haría:
enum Estacion { PRIMAVERA, VERANO, OTOÑO,
INVIERNO }
– Esta declaración define una NUEVA CLASE
• Puede redefinir métodos de Object
• Puede añadir métodos propios
• Se visualiza como el string del nombre, no como un
entero
• Es Comparable y Serializable...
– Veamos un ejemplo
Programación III Tema 5 - Java 6
13. Enumeraciones (3/3)
public class Carta {
public enum Rango { DOS, TRES, CUATRO, CINCO, SEIS, SIETE,
SOTA, CABALLO, REY, AS }
public enum Palo { OROS, COPAS, ESPADAS, BASTOS }
Rango rango;
Palo palo;
public Carta(Rango r, Palo p) {
rango = r;
palo = p;
}
public String toString() { return rango + " de " + palo; }
public static List<Carta> baraja = new ArrayList<Carta>();
// Inicialización ...
public void static main (String s[]) {
for (Palo p : Palo.values())
for (Rango r : Rango.values())
baraja.add(new Carta(r,p));
}
}
Programación III Tema 5 - Java 6
14. Parámetros variables
(varargs)
– Java 1.4 no permite número de parámetros variable (lo que obliga a
no permitir construcciones como el println de C)
– Se puede simular pasando varios objetos dentro de un único array
de objetos
– Java 1.5 permite indicar parámetros múltiples con puntos susp.:
public static int suma( Integer... listaEnts ) {
int sum = 0;
for (Integer i : listaEnts) {
sum += i; //combinado con unboxing
}
return sum;
}
– Se comporta como un array de parámetros
– Con lo que podríamos hacer
int i = Arit.suma( 1, 2, 3 ); // autoboxing
int j = Arit.suma( 5, 10, 15, 20, 25, 30 );
...
– Se incorpora un nuevo método printf
Programación III Tema 5 - Java 6
15. Importación estática
– Los nombres estáticos (las antiguas variables y
funciones “globales”) obligan a abusar de los
prefijos de nombres de clase. Por ejemplo:
import java.lang.Math;
...
double r = Math.cos(Math.PI * alfa);
– Java 1.5 facilita este proceso permitiendo
importar también nombres de atributos y
métodos estáticos, para evitar el prefijo de
clase:
import static java.lang.Math.*;
// podría ser uno a uno:
// import static java.lang.Math.PI;
...
double r = cos(PI * alfa);
Programación III Tema 5 - Java 6
16. Metadatos (Anotaciones)
– Java, siguiendo la idea de .NET de MS, incorpora
en la versión 1.5 anotaciones
– Las anotaciones permiten añadir metadatos en el
propio programa, no como comentarios
• Veremos alguna más adelante
Programación III Tema 5 - Java 6
17. Mejoras del JDK 1.6
• Mayor facilidad en el desarrollo de Servicios
Web XML.
• Integración sencilla con otros lenguajes de
scripting como JavaScript, Python y Ruby.
• Mejora en el acceso a bases de datos
mediante JDBC4.0 así como la API Java DB.
• Mejoras en el desarrollo de aplicaciones de
escritorio (ventanas) mediante componentes
nuevos, gestores de hilos de interfaz, filtros
de ordenación y actualización, etc.
Programación III Tema 5 - Java 6
18. Mejoras del JDK 1.6
• Mayores utilidades para perfilar el rendimiento de
una aplicación y diagnóstico.
• Mayor acceso a funcionalidades del compilador
para compilación de código objeto bajo demanda
o para desarrollar herramientas para la plataforma.
• Mejor gestión de anotaciones así como posibilidad
de ejecutar los procesadores necesarios según las
mismas.
• Mejoras en la distribución de aplicaciones de
escritorio (ventana) mediante una mejor
integración con el sistema, plug-ins, webstart, etc.
Programación III Tema 5 - Java 6
19. Mejoras del JDK 1.6
• Más y mejores estructuras de seguridad en la
plataforma tanto para el desarrollo usando
tecnologías de autentificación como en la
administración de seguridad de la aplicación.
• Al haberse desarrollado multitud de
programas y líneas de testeo, la plataforma
Java cada vez está resultando más estable,
fiable y robusta. Solución a problemas del
pasado, bugs, problemas de compatibilidad
hacia atrás, etc…
Programación III Tema 5 - Java 6
20. Colecciones
• Colecciones = contenedores
– Objetos que sirven como grupo de objetos
– Se usan para almacenar, recoger, manipular
y comunicar datos
– Suelen representar grupos naturales (carpeta de
documentos, un directorio de contactos...)
– Son imprescindibles en todo lenguaje
• La colección más básica es el array (y el fichero en
memoria secundaria)
• En Java 1.2 estaban también Vector y Hashtable
• En Java 1.5 se incorpora todo el framework
Collections
Programación III Tema 5 - Java 6
21. Framework Java
Collections
• Es una arquitectura unificada para manejar
contenedores en Java (desde la 1.5)
– Interfaces (representaciones abstractas)
– Implementaciones (clases instanciables)
– Algoritmos (búsqueda, ordenación...)
• Estilo STL de C++ (más sencillo)
• De amplio espectro
– Se pueden usar en muchos casos concretos
– Modo seguro y contrastado de usar EEDD
– Aunque hay que conocerlas bien!
Programación III Tema 5 - Java 6
22. JC: Interfaces
• Semántica de agrupación
– Diferentes usos
– Interfaces abstractos
– Forman una jerarquía
• Todas las colecciones son genéricas
– Los tipos se controlan en compilación
– Pero también pueden hacerse polimórficas
conteniendo a su vez clases padre o interfaces
– Para simplificar, las variantes de implem. no
están incluidas en los interfaces
Programación III Tema 5 - Java 6
23. JC: Variantes en Interfaces
• Las variantes de implementación son 3:
• inmutables, tamaño fijo, append-only
• JC decide meter las diferencias como
métodos opcionales
– "optional" indicado en la documentación
– Cada clase puede o no soportarlos
– Si se llaman y no lo están, excepción
UnsupportedOperationException
Programación III Tema 5 - Java 6
24. JC: Descripción de los Interfaces
• Collection: Agrupación de elementos
– Set (conjunto): Colección sin duplicados
• SortedSet: Ordenado por valor (comparación)
– List (lista, secuencia): colección ordenada por
posición (estilo array). Puede tener duplicados
– Queue (cola): Almacén ordenado de elementos
hasta su proceso
• Map: Agrupación de emparejamientos
clave-elemento (sin duplicados)
– SortedMap: Ordenado por clave
Programación III Tema 5 - Java 6
25. JC: Ordenación
• Algunos tipos son ordenados y otros
permiten ordenar:
List l = ... Collections.sort( l );
– Imprescindible: implementar Comparable<T>
public int compareTo( T o );
– Hay clases básicas comparables:
• Boolean, Byte, Character
• Long, Integer, Short, Double, Float
• BigInteger, BigDecimal
• String, Date, File ...
– Y podemos definir las nuestras. Ejemplo:
Programación III Tema 5 - Java 6
26. JC: Ejemplo de Comparable
import java.util.*;
public class Nombre implements Comparable<Nombre> {
private final String nombre, apellidos;
public Nombre(String nombre, String apellidos) {
if (nombre == null || apellidos == null)
throw new NullPointerException();
this.nombre = nombre;
this.apellidos = apellidos;
}
public String nombre() { return nombre; }
public String apellidos() { return apellidos; }
public boolean equals(Object o) {
if (!(o instanceof Nombre)) return false;
Nombre n = (Nombre) o;
return n.nombre.equals(nombre) &&
n.apellidos.equals(apellidos);
}
Programación III Tema 5 - Java 6
27. Ejemplo de Comparable (2)
public int hashCode() {
// objetos iguales (equals) deben tener hash iguales
return 31*nombre.hashCode() + apellidos.hashCode();
}
public String toString() {
return nombre + " " + apellidos;
}
public int compareTo(Nombre n) {
int ultimaCmp = apellidos.compareTo(n.apellidos);
return (ultimaCmp != 0 ? ultimaCmp :
nombre.compareTo(n.nombre));
}
}
Programación III Tema 5 - Java 6
28. ¿Cómo se ordena?
Algoritmo
Nombre n1, n2, n3, n4, n5;
// Uso 1: explícita (ALGORITMO) de Collections
ArrayList<Nombre> ln = new ArrayList<Nombre>();
ln.add( n1 = new Nombre( "Buzz", "Lightyear" ));
ln.add( n2 = new Nombre( "Woody", "Allen" ));
ln.add( n3 = new Nombre( "Tim", "Burton" ));
ln.add( n4 = new Nombre( "Richard", "Marx" ));
ln.add( n5 = new Nombre( "Groucho", "Marx" ));
Collections.sort( ln );
System.out.println( ln );
[Woody Allen, Tim Burton, Buzz Lightyear, Groucho Marx,
Richard Marx]
Programación III Tema 5 - Java 6
29. ¿Cómo se ordena?
Estructura
// Uso 2 de ordenación: en estructura ordenada
TreeSet<Nombre> sn = new TreeSet<Nombre>();
sn.add( n1 );
sn.add( n2 );
sn.add( n3 );
sn.add( n4 );
sn.add( n5 );
System.out.println( sn );
[Woody Allen, Tim Burton, Buzz Lightyear, Groucho Marx,
Richard Marx]
Programación III Tema 5 - Java 6
30. ¿Y más de un orden?
Comparator
• Tenemos un problema si necesitamos más de
un orden (sólo uno en Comparable)
– Solución: Comparator
static final Comparator<Nombre> ORDEN_DE_NOMBRE =
new Comparator<Nombre>() {
public int compare(Nombre n1, Nombre n2) {
return n1.nombre.compareTo(n2.nombre);
}
};
(...)
Collections.sort( ln, ORDEN_DE_NOMBRE );
System.out.println( ln );
[Buzz Lightyear, Groucho Marx, Richard Marx, Tim Burton,
Woody Allen]
Programación III Tema 5 - Java 6
31. JC: Implementaciones
• Las clases que permiten hacer todo esto son:
– Estas son las de propósito general
– Algunos interfaces tienen varias
implementaciones con EEDD distintas (set, map)
Programación III Tema 5 - Java 6
32. JC: Implementaciones
típicas
• Lo habitual será usar:
– Set: HashSet
• SortedSet: TreeSet
– List: ArrayList
– Map: HashMap
• SortedMap: TreeMap
– Queue: LinkedList (FIFO)
• Con prioridad (ord. por valores): PriorityQueue
• No están sincronizadas (ver threads)
– Para la mayor parte de usos no hace falta
Programación III Tema 5 - Java 6
33. JC: Otras implementaciones
• JC funciona con wrappers para cambios
– Se crea una segunda colección que "envuelve" a
la original con otras características
• Sincronización (threads)
List<Nombre> ln = Collections.synchronizedList(
new ArrayList<Nombre>() );
• No modificable (los objetos no cambian)
List<Nombre> ln = Collections.unmodifiableList(
new ArrayList<Nombre>() );
• Otras especializadas
Programación III Tema 5 - Java 6
34. JC: Otras utilidades
• Vista de un array como una List:
Nombre[] vNoms = new Nombre[100];
(...)
List<Nombre> lNoms = Arrays.asList( vNoms );
– No permite modificaciones (es sólo una vista)
• Constantes vacías
– Si se necesitan para paso de valor inicial vacío
• Collections.emptySet()
• Collections.emptyList()
• Collections.emptyMap()
Programación III Tema 5 - Java 6
35. JC: Algoritmos
• Todos están en la clase Collections
– Ordenar: sort( list ), sort( list, Comparator )
– Desordenar aleatoriamente: shuffle( list )
– Manipular datos:
• Invertir posición: reverse( list )
• Rellenar (sustituir) de un valor: fill( list )
• Copiar de una lista a otra: copy( list1, list2 )
• Intercambiar elementos: swap( list, ind1, ind2 )
• Añadir varios elementos: addAll ( list, elto... )
Programación III Tema 5 - Java 6
36. JC: Algoritmos (2)
– Buscar datos
• Búsqueda en lista ordenada: binarySearch( list, elem
)
• Búsqueda por orden específico:
binarySearch( list, elem, comparator )
• La búsqueda devuelve dos informaciones en una:
– Valor positivo o 0 si se encuentra elemento: su posición
– Valor negativo si no se encuentra: el punto donde se
insertaría = (-pos-1)
– Composición:
• Contar elementos: frequency( colección, elem )
• Comprobar que no hay elementos comunes:
disjoint( colección1, colección2 )
– Buscar valores extremos: min y max
Programación III Tema 5 - Java 6
37. JC: Mejoras en Java 6
• Nuevos interfaces:
– Deque - cola de doble dirección
– BlockingDeque - una Deque concurrente que
espera a la cola no vacía o no llena
– NavigableSet - un SortedSet mejorado con
métodos de navegación que buscan resultados
cercanos, y permiten recorrer en las dos
direcciones.
– NavigableMap - un SortedMap mejorado del
mismo modo.
– ConcurrentNavigableMap .
Programación III Tema 5 - Java 6
38. JC: Mejoras en Java 6 (2)
• Nuevas implementaciones:
– ArrayDeque - implementación de Deque.
– LinkedBlockingDeque - de BlockingDeque.
– ConcurrentSkipListSet - de NavigableSet.
– ConcurrentSkipListMap - de
ConcurrentNavigableMap.
• Mejoras en clases existentes:
– LinkedList - implementa Deque.
– TreeSet - implementa NavigableSet.
– TreeMap - implementa NavigableMap.
• Utilidad de Arrays copiar/truncar: copyOf
Programación III Tema 5 - Java 6
39. Otras mejoras importantes
de Java 7
• Nueva y mejorada E/S (NIO 2.0)
– Path mejorando a File
– Globs además de Patterns
– Mejoras de trabajo directo con ficheros
• Gestión de ZIP y JAR como sists. de ficheros
• Mejoras para la generación de aplicaciones
de internet (RIA, Rich Internet Applications)
• Integración de JavaFX
– Una plataforma nueva y avanzada para interfaz
de usuario
Programación III Tema 5 - Java 6