Download ESTRUCTURA DE DATOS EN JAVA

Document related concepts
no text concepts found
Transcript
ESTRUCTURA DE
DATOS EN JAVA
Ingeniero José Leyder Gil López
 Un arreglo se usa para agrupar, almacenar y organizar datos de un
mismo
ARREGLOS
UNIDIMENSIONALES Y
BIDIMENSIONALES
 tipo. En un arreglo cada valor se almacena en una posición
numerada
 específica dentro del arreglo. El número correspondiente a cada
posición se
 conoce como índice.
ARREGLOS
ESTRUCTURA DE UN ARREGLO
UNIDIMENSIONAL
Normalmente el primer objeto del arreglo tiene el índice 0, aunque esto
varía de lenguaje en lenguaje.
 Declaración:
Como se sabe, hay 2 tipos de datos en Java: primitivos (como int y double) y
objetos. En muchos lenguajes de programación (aún en Orientados a Objetos
como C++) los arreglos son tipos primitivos, pero en Java son tratados como
objetos. Por consiguiente, se debe utilizar el operador new para crear un
ARREGLOS
arreglo:
UNIDIMENSIONALES – COMO SE
DECLARAN
int miArreglo[]; // define la referencia a un arreglo
miArreglo = new int[100]; // crea el arreglo y establece miArreglo
// como referencia a él
O el equivalente a hacerlo dentro de una misma sentencia
int miArreglo[] = new int[100];
El operador [] es la señal para el compilador que estamos
declarando un arreglo (objeto) y no una variable ordinaria.
Dado que un arreglo es un objeto, el nombre –miArreglo-, en el
ejemplo anterior- es una referencia a un arreglo y no el nombre del
arreglo como tal.
ARREGLOS
UNIDIMENSIONALES – HALLAR EL
TAMAÑO DEL ARREGLO
El arreglo es almacenado en una dirección de memoria x, y
miArreglo almacena solo esa dirección de memoria.
Los arreglos tienen el método length, el cual se utiliza para
encontrar el tamaño de un arreglo:
int tamaño = miArreglo.length; // arroja el tamaño del arreglo
Para acceder a los elementos de un arreglo se debe utilizar los
corchetes, muy similar a otros lenguajes de programación:
ARREGLOS
UNIDIMENSIONALES – COMO
ACCEDER A LOS ELEMENTOS DEL
ARREGLO
temp = miArreglo[4]; // guarda en temp el valor del cajón 4 del
arreglo
miArreglo[8] = 50; // almacena en el cajon 8 del arreglo el valor 50
Es preciso recordar que en Java, como en C y C++, el primer
elemento del arreglo es el 0. Luego entonces, los índices de un
arreglo de 10 elementos van del 0 al 9.
package arreglosunidimensionales;
public class ArreglosUnidimensionales {
public static void main(String[] args) {
int x[] = new int[5];
x[0] = 10;
x[1] = 30;
x[2] = 25;
ARREGLOS
x[3] = 2;
UNIDIMENSIONALES - EJEMPLO
x[4] = 12;
for (int i = 0; i < x.length; i++) {
System.out.println("x[" + i + "]:" + x[i]);
}
}
}
Se pueden implementar una serie de operaciones básicas sobre
los arreglos, a saber:
 - Insertar elementos
ARREGLOS
 - Búsqueda de elementos
UNIDIMENSIONALES –
OPERACIONES SOBRE ARREGLOS
 - Eliminar elementos
 - Mostrar los elementos
 - Ordenar los elementos
 - Modificar algún elemento
Un arreglo de dos dimensiones, también llamado tabla o matriz,
donde cada elemento se asocia con una pajera de índices, es otro
arreglo simple.
Conceptualizamos un arreglo bidimensional como una cuadrícula
rectangular de elementos divididos en filas y columnas, y utilizamos
la notación (fila,
ARREGLOS
BIDIMENSIONALES - MATRICES
columna) para identificar un elemento específico. La siguiente
figura muestra la visión conceptual y la notación específica de los
elementos:
El trabajo con los arreglos bidimensionales es muy parecido a los
arreglos lineales, la declaración de uno de ellos se da de la siguiente
manera:
ARREGLOS
BIDIMENSIONALES DECLARACIÓN
double [][] temperatures = new double [2][2]; // Dos filas y dos
columnas.
La asignación de datos, se hace de una forma similar a los arreglos
lineales:
temperatures [0][0] = 20.5;
temperatures [0][1] = 30.6;
temperatures [0][2] = 28.3;
ARREGLOS
BIDIMENSIOANLES – ASIGNACIÓN
DE DATOS
temperatures [1][0] = -38.7;
temperatures [1][1] = -18.3;
temperatures [1][2] = -16.2;
Las operaciones con las matrices son muy variadas, desde las
básicas como:
insertar y eliminar elementos hasta multiplicaciones de matrices,
entre otras.
package arreglosbidimensionales;
public class ArreglosBidimensionales {
public static void main(String[] args) {
int x[][];
x = new int[2][2];
x[0][0] = 34;
x[0][1] = 11;
x[1][0] = 25;
ARREGLOS
x[1][1] = 4;
BIDIMENSIONALES - EJEMPLO
for (int i = 0; i < 2; i++) {
for (int j = 0; j < 2; j++) {
System.out.println("x[" + i + "][" + j + "]" + x[i][j]);
}
}
}
}
COLECCIONES
Librería: Java.util
 Framework que nos permite utilizar diferentes estructuras de
datos para almacenar y recuperar objetos de cualquier clase
(java.util)
COLECCIONES
 INTERFAZ: CLASE ABSTRACTA QUE NO NOS PERMITE USARLA PARA
CREAR OBJETOS, PERO SI DEFINE LOS MÉTODOS QUE TENDRÁ TODAS
LAS POSIBLES IMPLEMENTACIONES DE LA INTERFAZ
 Sintaxis para instanciar una colección
SINTAXIS PARA
INSTANCIAR
UNA
COLECCIÓN
 Colección<clase> nombre = new Colección<clase>();

 Ejemplo
 List<String> lista = new ArrayList<String>();
SUBTIPOS DE
LA INTERFAZ
COLLECTION
 CONJUNTO: (Hereda de Collection): Los elementos no tienen un
orden y no se permiten duplicados, hereda de la clase collection
 Interfaz: Set <E>
 Implementaciones: HashSet<E>, LinkedSet<E>, TreeSet<E>
SUBTIPOS DE
LA INTERFAZ
COLLECTION
 LISTA: (Hereda de Collection): list es una colección de elemento
potencialmente repetidos indexados por enteros (se parece a un
array). Se puede usar en una factura. Se puede usar en las notas que
se sacan de un examen. Es una estructura secuencial, donde cada
elemento tiene un índice o posición
 Interfaz: List <E>
 Implementaciones: ArrayList<E>, LinkedList<E>, Stack<E>,
Vector<E>
SUBTIPOS DE
LA INTERFAZ
COLLECTION
 DICCIONARIO: (No hereda de Collection): Map es una colección de
elementos repetibles indexados por clave única arbitraria, el tema
semántico de los map es la clave no el valor, la clave no puede
repetirse, se puede guardar 10 veces el mismo valor siempre y
cuando la clave sea distinta. Cada elemento tiene asociado una
clave que se usara para poder recuperarlo.
 Interfaz: Map <K, V>
 Implementaciones: HashMpa< K, V >, TreeMap< K, V >, LinkedMap<
K, V >
COLECCIONES
GRAFICA DE JERARQUÍA DE
INTERFACES Y CLASES
INTERFAZ COLLECTION (CONJUNTOY LISTA)
MÉTODOS QUE SON HEREDADOS POR DESDE COLLECTION POR
LOS CONJUNTOSY LAS LITAS
COLECCIONES –
INTERFAZ
COLLECTION
boolean add(E e): Añade un nuevo elemento a la Colección.
boolean remove(E e): Elimina el elemento indicado.
boolean contains(E e): Mira si el elemento está en la colección
void clear(): Elimina todos los elementos de la colección.
Int size(): Devuelve el número de elementos en la colección.
boolean isEmpty(): Comprueba si la colección está vacía.
LOS SIGUIENTES MÉTODOS COMBINAN 2 COLECCIONES
COLECCIONES –
INTERFAZ
COLLECTION
boolean
en c
addAll(Collection<?> c): Elimina todo elemento que este
boolean
containsAll(Collection<?>
subconjunto nuestro
c):
Comprueba si c es
boolean retainAll(Collection<?> c): Elimina todos los elementos a
no ser que estén en c (Obtiene la intersección).
EJEMPLOS:
CONJUNTO: Estructura De Datos Donde Los Elementos No Tienen
Un Orden Ni Se Permiten Duplicados.
Set<String> conjunto = new HashSet<String>();
conjunto.add(“manzana”);
COLECCIONES –
CONJUNTO
(SET)
conjunto.add(“pera”);
conjunto.add(“banano”);
conjunto.add(“mango”);
for (String s : conjunto){
System.out.println(s);
}
LISTA: Estructura Secuencial, donde cada elemento tiene un índice
o posición
Metodos:
boolean add(int índice, E e): Inserta Elemento a la Posición
COLECCIONES –
LISTA (LIST)
E get(int índice): Devuelve elemento en la posición.
int indexOf(E e): Primera Posición en que se encuentra elemento.
int lastIndexOf(E e): Ultima Posición del elemento.
E remove(int índice): Elimina el elemento de la posición indicada.
E set(int índice, E e): Reemplaza elemento en la posición
package ejemploarraylist2;
import java.util.*;
public class EjemploArrayList2 {
public static void main(String[] args) {
List<String> lista = new ArrayList<>();
lista.add("LEYDER");
COLECCIONES –
LISTA (LIST)
IMPLEMENTACIÓN
ARRAYLIST
lista.add("GIL");
lista.add("LOPEZ");
//Añadir un elemento en una posición de la Lista.
//lista.add(1, "OK");
for (String c : lista) {
System.out.println(c);
}
}
}
public class EjemploArrayList {
public static void main(String[] args) {
List<String> cadenas; //Declaración
cadenas = new ArrayList<>(); //Crear Instancia
cadenas.add("Hola"); //Agregar Elementos
cadenas.add("como");
cadenas.add("Estas");
COLECCIONES –
LISTA (LIST) –
IMPLEMENTACIÓN
ARRAYLIST
for (int i = 0; i < cadenas.size(); i++) {//Recorrer arraylist con un for
System.out.println("--->" + cadenas.get(i));
}
cadenas.remove(1); //Eliminar Elementos
for (int i = 0; i < cadenas.size(); i++) {
System.out.println("===>" + cadenas.get(i));
}
}
}