domingo, 6 de diciembre de 2015

Avance del Proyecto: Comparación Del Rendimiento Cuando Carga los Datos en Listas Usando ArrayList y LinkedList


Comparación Del Rendimiento Cuando Carga los Datos en Listas Usando ArrayList y LinkedList 

Utilizando LinkedList se obtuvo el siguiente resultado: 85 milisegundos

Utilizando ArrayList se obtuvo el siguiente resultado: 69 milisegundos

De acuerdo a los resultados obtenidos, se puede concluir que para cargar los datos en listas es mucho más rápido mediante un ArrayList con una ventaja de 16 milisegundos ante una LinkedList.

martes, 1 de diciembre de 2015




Proyecto de Estructura de Datos
Primer Avance

Se analizó las variables a utilizar:


jueves, 26 de noviembre de 2015

Avance del Proyecto: Identificación de los TDA´s

Identificación Y Motivo De Creación De Los TDA´S

DataSetTRAINING

Se ha identificado DataSetTRAINING como un Tipo de Dato Abstracto que contendrá información acerca de las calificaciones de cada película como el usuario, calificación  y fecha de la calificación cuyos datos están presentados de la siguiente manera: CustomerID, Rating, Date.
Este tipo de dato permitirá crear las  listas o arreglos que luego podrán ser ingresados como parámetros en los métodos requeridos o como un tipo de dato de retorno.
Los métodos implementados con este TDA son:
·         cargar(String archivo)
Se encarga de leer y mostrar la lista contenida en el archivo “training_set.tar”
·         Conten_ID(int id, LinkedList<DataSetTraining> lista)
Este método va a ayudar a separar toda la mega lista que se une de todos los archivos al cargar id Identificador de la lista Movie y lista, Lista enlazada de tipo DataSetTraining.
·         compare(DataSetTraining o1, DataSetTraining o2)
Compara dos listas tipo DataSetTRAINING por fechas
·         listaReturn ()
Método que hace ejecutar los hilos y retorna la lista de todos los TDA tipo DataSetTraining de todos los archivos existente en la base de datos
·         compareTo(DataSetTraining d)
Este metrodo compara un dato DataSetTraining con otro

movies

Se ha identificado Movies como un Tipo de Dato Abstracto que contiene información acerca de las características de cada película, es decir, su identificador, año de lanzamiento y el nombre de la película; ésta información se encontrará ordenada en un tipo de dato <Movies> de la siguiente manera: MovieID,YearOfRelease,Title
El tipo de dato <Movies> permitirá implementar los siguientes métodos
·         cargarMovies(String archivo)
 carga la base de datos de las películas asociadas
·         buscarCoincidencia(LinkedList<Movies> lista, String titulo)
Busca películas por medio de una palabra ingresada por el usuario respectivamente.
·         compare(Movies o1, Movies o2)
Este método compara el título de dos datos de tipo Movies

Resumen

Esta Clase fue creada para realizar un resumen de todos los datos del Archivo DataSetTraining.
Los métodos que implementan este Tipo de Dato Abstracto son:
·         compareTo(Resumen d)
Método que compara un dato de tipo Resumen con otro
·         crearListaResumen(LinkedList<DataSetTraining> lista)
Método que crea una lista con tipo de datos Resumen
·         guardar(LinkedList<Resumen> resumen)
Método que lee una lista tipo Resumen y escribe en un documento TXT

Top 10

Clase que se encarga de determinar las películas más votadas en valoraciones de 5, 4, 3, 2, 1 estrellas.
Los métodos  que implenta son:
·         compareTo(Top10 o) 
·         Método que compara un tipo de dato Top10 con otro
·         ListaRatingAcumuladaN(LinkedList<DataSetTraining> lista)
·         Método que genera la lista acumulada de “N” estrellas
·         ListaRatingAcumuladaN(.LinkedList<Resumen> listaResumen)

Método que genera la lista acumulada resumida de “N” estrellas.
=)

martes, 24 de noviembre de 2015

Java:Unión, Intersección y Diferencia entre conjuntos creando y leyendo Archivos

En la publicación anterior vimos cómo hacer la unión, intersección y diferencia de conjuntos, los cuales creamos y dimos valores mediante dos LinkedList de tipo <Coordenada>, es decir (x,y,z); ahora realizaremos las mismas operaciones, pero los datos serán leidos desde un archivo de texto .txt para luego guardar los resultados en otro archivo .txt.

En Union, Interseccion y Diferencia de conjuntos pueden revisar como se hacen dichas operaciones para que puedan comprender el programa a continuación.

Primeramente, en la Clase Coordenada, creamos el método cargar, el cual leerá dos archivos .txt que deberán estar ubicados en la misma carpeta donde se guarda el proyecto.


Luego realizamos la implementación dentro del programa principal, que quedará de la siguiente manera:
  • Los archivos de texto creados previamente se llaman "ciudades" y "ciudades" que corresponden a mis conjuntos 1  y 2 respectivamente 


Dentro de la clase ProgramaArchivos, pero fuera del main, creamos el método GUARDAR, que permite la creacion y escritura de un nuevo archivo de texto mostrando los resultados de las operaciones en un archivo de texto llamado "Resultados"

 A continuación, les muestro los archivos "ciudad", "ciudad1" y "Resultados" para que comprueben.



Java:Unión, Intersección y Diferencia entre conjuntos

Dados dos conjuntos de tipo <Coordenada>, es decir (x,y,z) se pide realizar la unión, intersección y diferencia entre ellos utilizando LinkedList. Posteriormente presentar los resultados

Primeramente, creamos la clase Conjunto, la cual contendrá un método por cada operacion de la siguiente manera:

 Empezaremos con el código fuente de la UNION entre conjuntos, el cual recibe como parámetros 2 conjuntos de tipo <Coordenada>.

  • Utilizamos los iteradores i, j para recorrer ambos conjuntos y creamos una lista vacía llamada listaUnion.
  • Nos ubicamos en los elementos de "conjunto1" , preguntamos si listaUnion no contiene dicho elemento, de ser así, lo agregamos a la lista e ingresamos al "conjunto2".
  • Una vez dentro del lazo While en "conjunto2" cuestionamos si el elemento del conjunto1 es diferente al elemento del conjunto2, si cumple con la condición, agregamos el elemento2 a la lista.
  • Finalmente retornamos la lista listaUnion




Para el método INTERSECCION también recibimos dos listas enlazadas llamadas conjunto1 y 2.

  • Utilizamos los iteradores i, j para recorrer ambos conjuntos y creamos una lista vacía llamada listaIntersección. 
  • Iniciamos ubicandonos en el primer elemento del conjunto1  para recorrerlo con un while y dentro de  el, con otro while recorremos el conjunto2.
  • Si cumple con la condición de que ambos elementos sean iguales, se agregará el elemento1 o 2 a la lista listaInterseccion.
  • Finalmente retornamos listaInterseccion.


En el método DIFERENCIA, también recibimos como parámetros las dos linkedList llamadas conjunto1 y 2 respectivamente. Tener en cuenta que la diferencia de conjuntos corresponde a los elementos que están en el primer conjunto pero que no están en el conjunto2.


  • Se usa un solo iterador para recorrer el conjunto1, dentro del cual se establece la condición de que el conjunto2 no contenga al elemento del conjunto1, de cumplir, se agrega el elemento a la lista listaDiferencia.





Para el método Imprimir, recibimos una lista, la cual recorremos mediante un for, y por cada iteración imprimimos un elemento.



Finalmente el programa principal, implementado los métodos creados nos quedaría de la siguiente manera:

Para probarlo, creamos los conjuntos 1 y 2 y lo agregamos dentro de la clase Programa, pero fuera del main.