Seguidores

MIS WEBS



jueves, 4 de enero de 2018

MATRICES (ARRAYS O ARREGLOS) java

MATRICES (ARRAYS O ARREGLOS)



Una matriz es una estructura de datos que nos permite almacenar una gran cantidad de valores del mismo tipo. El tamaño que va a tener el array lo determinaremos en el inicio.

SINTAXIS

Int
[] nombre_array=new
Int
[número valores almacenados]
Long
Long
Short
short
Doublé
double

Ejmplo. Declaramos una matriz de  elementos que sean números enteros.


3
6
8
10
20
Posición
0
Posición
1
Posición
2
Posición
3
Posición
5

La declaramos:
Int[] array = new int [5];

Ahora la iniciaremos (cargar los datos). Siempre la iniciaremos desde 0, por lo que un array de 5 posiones irá del 0 la 4.

Array [0]= 3;
Array [1]= 6;
Array [2]= 8;
Array [3]= 10;
Array [4]= 20;

También la podríamos declarar  en línea.


Int[] array = {3,8,10,20};





ejmplo2.

Utilizaremos un bucle for para llenar un array.


import javax.swing.JOptionPane;
public class Practica18_Bucles_determinados_for4_arrays {

public static void main(String[] args) {

int[] valor = new int[5];

for (int i=0;i<5;i++ ) {
valor[i]=Integer.parseInt(JOptionPane.showInputDialog("dime tu numero rey "));
}
for (int j =0;j<5;j++) {

System.out.println( valor[j]);
           }
}
}

Ejemplo3:
Existe una propiedad del objeto array lenght que nos indica la longitud de una matriz y nos resulta muy útil para recorrer un array.

public class Practica19_Bucles_determinados_for5_arrays_length
       public static void main(String[] args) {

            
            
             int[]array= {10,20,30,50,60,-658,1,2,3,4,5,6,-1,-2,-3,-4,-5,-6,-7,-8,-9};
             for (int i=0; i<array.length ;i++) {
                   
                    System.out.println("en posició "+i+" esta el numero "+array[i]);
                   
             }
       }


}


Ejemplo3:


Con el método parallelSort() podemos ordenar lo datos almacenados dentro de un array de menor a mayor.
Ejm.
import java.util.Arrays;
         int xxx[]= {50,89,250,1,89,300,900,6};
        
         Arrays.parallelSort(xxx);
        
         for (int i:xxx) {
              System.out.println(i);
CONSOLE:
1
6
50
89
89
250
300
900


BUCLE FOR EACH




       Es un método más tapido para recorrer un bucle.


SINTAXIS
For (

String
Variable : variable a recorrer){código…}
Int
long





Ejmplo 1:

public class Practica20_Bucles_determinado_ForEach {

       public static void main(String[] args) {

       String []dias_semana=new String[7];
             int contador =0;
                          for (int i=0;i<dias_semana.length;i++) {              dias_semana[i] =JOptionPane.showInputDialog("dime el dia "+ (i+1));
             }
            
             for (String j:dias_semana) {
                    contador++;
                   
                    System.out.println(" el  dia de la semana "+contador + " es "+j);

             }



MATRICES BIDIMENSIONALES




Para conseguir un array en dos dimensiones introduciremos un array dentro de otro. Para encontrar una semejanza pensemos en una tabla.

0,0
1,0
2.0
3.0
0.1
1.1
2.1
3.1
0.2
1.2
2.2
3.2


Este array lo declarariamos de la siguiente manera:

Int [ ] array = new int [numero columnas][numero filas];
Int [ ] array = new int [4][3];



Otra forma es hacerlo in line:
Int [ ] []array = { {10,5,63,90,2,3} , {1,93,58,20,58} {10,15,20,30,40,50,60} , {1,2,3,4,5,6,7,8}};


Ejmplo 1:

En el siguiente ejercicio crearemos un array en dos dimensiones que rellenaremos con números aleatorios e imprimiremos en la ventana de inmediato. Para poderlo realizar necesitaremos crear un bucle for anidado (un for dentro de otro).
public class Practica21_Matrices_Bidimensionales {

     public static void main(String[] args) {
    
         
          int[][] array=new int [4][5];
         
          for (int i =0; i<4;i++) {
               
                for (int j=0;j<5;j++) {
                    
                     array[i][j]= (int)(Math.round((Math.random()*100)));
                     System.out.println("En la posición( "+ i +" , "+j+ ") : " + array[i][j]);
               
                }
               
                System.out.print("\n");       
               
          }
     }
}



Ejemplo2:
     En este caso crearemos registro de forma aleatoria (Math.random) y los imprimiremos en la venta de inmediato, pero en esta ocasión utilizaremos un bucle for each.



public class Practica23_Matrices_Bidimensionales_forEach {

     public static void main(String[] args) {

          int matriz [][]=new int [5][10];
         
         
          for (int [] TodaLAmatriz:matriz) {
               
                System.out.println("");
               
                for (int posicion_actual:TodaLAmatriz) {
         
                     posicion_actual =(int)Math.round((Math.random()*100));
                     System.out.print(posicion_actual +"    ");               }   
          }        
     }

}


ORDENAR UN ARRAY


Con el método parallelSort () podemos ordenar los datos almacenados dentro de un array de menor a mayor.
Ejm.
import java.util.Arrays;
         int xxx[]= {50, 89, 250, 1, 89, 300, 900, 6};
//Utilizamos el método parallelSort de la clase arrays para ordenar el array
         Arrays.parallelSort(xxx);
//utilizamos un bucle For each para imprimirlo en consola
         for (int i:xxx) {
              System.out.println (i);


ArrayList y LinkedList





ArrayList como LinkedList implementan la interfaz List y se encuentran en el paquete java.util.

La principal diferencia es un tema de implementación ArrayList implementa la lista con arreglos linkeados, lo que la hace muy eficiente para recorrer pero ineficiente para insertar o eliminar elementos que se no encuentren en el final. En cambio LinkedList es una lista de elementos linkeados (en realidad es una lista doblemente enlazada) lo que la hace lenta para recorrer pero sumamente eficiente para insertar o eliminar elementos. Esta es la principal diferencia y hay que recordarla siempre.

Por lo tanto ArrayList :

usa internamente un arreglo dinámico para almacenar los elementos.
proporciona una manipulación lenta 
es la mejor opción para almacenar y acceder a datos o elementos consecutivos. 

Por lo tanto LinkedList:

proporciona una manipulación más rápida porque utiliza una lista doblemente enlazada.
se puede utilizar como lista y cola porque implementa interfaz de List, Deque y Queue.
es mejor para manipulación de elementos, es decir, para insertar y eliminar elementos.
Por lo tanto si necesitamos agregar elementos consecutivos y recorrerlos debemos utilizar ArrayList y si en cambio necesitamos insertar y eliminar valores no consecutivos debemos usar LinkedList.

Ejmplo  ArrayList:

package mis_frames;
import java.util.*;
public class array {
        public static void main(String[] args) {
                List<String> i = new ArrayList<String>();
                i.add("z");
                i.add("x");
                i.add("a");
                i.add("b");
       
                Iterator<String> x = i.iterator();
        while(x.hasNext()) {
             System.out.println(x.next());
        }
    }
}


Ejmplo LinkedList
ackage mis_frames;
import java.util.*;
public class array {
        public static void main(String[] args) {
                List<String> i = new LinkedList<String>();
                i.add("z");
                i.add("x");
                i.add("a");
                i.add("b");
       
                Iterator<String> x = i.iterator();
        while(x.hasNext()) {
             System.out.println(x.next());
        }
    }
}

No hay comentarios:

Publicar un comentario

Buscar este blog

Sandisk y Western Digital