miércoles, 15 de febrero de 2017

LISTAS DOBLES

En algunas aplicaciones podemos desear recorrer la lista hacia adelante y hacia atrás, o dado un elemento, podemos desear conocer rápidamente los elementos anterior y siguiente. En tales situaciones podríamos desear darle a cada celda sobre una lista un puntero a las celdas siguiente y anterior en la lista tal y como se muestra en la figura.


Creación de la clase Nodo
Comenzaremos creando la clase Nodo con sus dos enlaces.

/**
 *
 * @author Jhon
 */
public class Nodo {
public int info;
public Nodo sgte;
public Nodo ante;
public Nodo(){

}
public Nodo (int x){
this.info = x;
this.sgte = null;
this.ante = null;
}
}

Como podemos apreciar la clase nodo tiene dos punteros los cuales están inicializados con nullsgte que apunta al ultimo nodo, y ante que apunta a primer nodo.



Operaciones con listas enlazadas:
Se pueden realizar muchas operaciones con estas listas, según sea el caso que se lo requiera aqui les presentamos las mas importantes:

Insertar un elemento al inicio de la lista.
Insertar un elemento al final de la lista.
Insertar después.
Visualizar los elementos de la lista.
Buscar.
Eliminar.
Insertar Inicio: Declaramos el nodo cab(cabezera) y Nodo ptr(puntero), luego los inicializamos a null.


private Nodo cab;
private Nodo ptr;
public ListaDoblementeEnlazada()
{
cab=ptr=null;
}
}

Declaramos un método para conocer si la lista esta vacía;


boolean estaVacia() {
boolean vacia = false;
if (cab == null)
{
vacia = true;
}
return vacia;
}

Método para insertar al inicio.

public ListaDoblementeEnlazada InsertarInicio(int x)
{
Nodo nuevo = new Nodo(x);
if (estaVacia()) {
cab = ptr = nuevo;
} else {
nuevo.sgte =cab;
cab.ante = nuevo;
cab = nuevo;
}
return this;
}

Insertar fin:

public ListaDoblementeEnlazada InsertarFin(int x)
{
Nodo nuevo = new Nodo(x);
if (estaVacia()) {
cab = ptr = nuevo;
} else {
ptr.sgte = nuevo;
nuevo.ante = ptr;
ptr = nuevo;
}
return this;
}

Insertar Después:

public ListaDoblementeEnlazada InsertarDespues(Nodo anterior ,int x)
{
Nodo nuevo = new Nodo(x);
nuevo.sgte = anterior.sgte;
if (anterior.sgte != null)
{
anterior.sgte.ante = nuevo;
}
anterior.sgte = nuevo;
nuevo.ante = anterior;
return this;
}

Imprimir la lista: Se declara un nodo n al cual se le asigna la cabecera de la lista, con la estructura de control while se va imprimiendo todos los nodos asta que la cabecera sea nula.

public void Visualizar()
{
Nodo n;
n = cab;
while (n != null)
{
System.out.print("<- n.info="">");
n = n.sgte;
}
}

Eliminar Nodo:

public void Eliminar(int entrada)
{
Nodo actual;
boolean encontrado = false;
actual = cab;
while ((actual != null) && (!encontrado))
{
encontrado = (actual.info == entrada);
if (!encontrado)
{
actual = actual.sgte;
}
}
if (actual != null){//distingue entre nodo cabecera o resto de la lista
if (actual == cab)
{
cab = actual.sgte;
if (actual.sgte != null)
{
actual.sgte.ante = null;
}
}
else if (actual.sgte != null) // No es el último nodo
{
actual.ante.sgte = actual.sgte;
actual.sgte.ante = actual.ante;
}
else // último nodo
{
actual.ante.sgte = null;
}
if (actual == ptr)
{
ptr = actual.ante;
}
actual = null;
}
}

Buscar Nodo: Se recorre la lista comparando si el valor ingresado(dato), es igual a alguno valore de la lista, en caso de encontrarlo lo retorna.

public Nodo Buscar(int dato)
{
Nodo indice;
for (indice = cab; indice != null; indice = indice.sgte)
{
if (dato == indice.info)
{
return indice;
}
}
return null;
}

Referencia concepto : Leonel Belduma http://iccbeldumaleonel.blogspot.pe/
LISTAS SIMPLES 

Las listas son estructuras de datos que permiten tener cierta flexibilidad en su manejo, pueden crecer o acortarse según se lo requiera, existen varias formas de implementar una lista en Java en este caso se presenta un ejemplo en código utilizando punteros mediante la referencia a objetos.

Las listas básicamente se forman del enlace de nodos los cuales funcionan como contenedores para almacenar el valor y enlace al siguiente nodo.

ESTRUCTURA DE UN NODO

Valor: valor del dato a guardar.
Enlace: apunta a la dirección en memoria del siguiente nodo.

LISTA SIMPLEMENTE ENLAZADA:




Características:

1) El último nodo de la lista no apunta a ningún a ninguno (null).
2) Se accede a la lista mediante el primer nodo o también llamado inicio de la lista.
3) No tiene acceso aleatorio es decir para acceder a un valor se debe recorrer toda la lista.

Ejemplo :

CLASE NODO

package Trabajo;

/**
 *
 * @author Jhon
 */
public class nodo {
    
    private int valor;
    
    private nodo siguiente;
   
    public void nodo(){
        this.valor = 0;
        this.siguiente = null;
    }
    
        
    public int getValor() {
        return valor;
    }

    public void setValor(int valor) {
        this.valor = valor;
    }

    public nodo getSiguiente() {
        return siguiente;
    }

    public void setSiguiente(nodo siguiente) {
        this.siguiente = siguiente;
    }  
}

CLASE LISTA

package Trabajo;
/**
 *
 * @author Jhon
 */
public class Lista {
     
    private nodo inicio;    
    private int tamanio;
    
    
    public void Lista(){
        inicio = null;
        tamanio = 0;
    }
   
    public boolean esVacia(){
        return inicio == null;
    }    
    public int getTamanio(){
        return tamanio;
    }
    
    public void agregarAlFinal(int valor){        
        nodo nuevo = new nodo();        
        nuevo.setValor(valor);        
        if (esVacia()) {           
            inicio = nuevo;        
        } else{           
            nodo aux = inicio;          
            while(aux.getSiguiente() != null){
                aux = aux.getSiguiente();
            }           
            aux.setSiguiente(nuevo);
        }        
        tamanio++;
    }
    
    
    public void agregarAlInicio(int valor){       
        nodo nuevo = new nodo();       
        nuevo.setValor(valor);
       
        if (esVacia()) {           
            inicio = nuevo;      
        } else{           
            nuevo.setSiguiente(inicio);            
            inicio = nuevo;
        }        
        tamanio++;
    }
    
    
    public void insertarPorReferencia(int referencia, int valor){        
        nodo nuevo = new nodo();       
        nuevo.setValor(valor);
       
        if (!esVacia()) {           
            if (buscar(referencia)) {                
                nodo aux = inicio;                
                while (aux.getValor() != referencia) {
                    aux = aux.getSiguiente();
                }                
                nodo siguiente = aux.getSiguiente();                
                aux.setSiguiente(nuevo);               
                nuevo.setSiguiente(siguiente);  
                
                tamanio++;
            }
        }
    }
   
    
    public void insrtarPorPosicion(int posicion, int valor){        
        if(posicion>=0 && posicion<=tamanio){
            nodo nuevo = new nodo();
            nuevo.setValor(valor);           
            if(posicion == 0){                
                nuevo.setSiguiente(inicio);
                inicio = nuevo;
            }
            else{                
                if(posicion == tamanio){
                    nodo aux = inicio;                   
                    while(aux.getSiguiente() != null){
                        aux = aux.getSiguiente();
                    }                   
                    aux.setSiguiente(nuevo);              
                }
                else{                    
                    nodo aux = inicio;                    
                    for (int i = 0; i < (posicion-1); i++) {
                        aux = aux.getSiguiente();
                    }                   
                    nodo siguiente = aux.getSiguiente();                   
                    aux.setSiguiente(nuevo);                    
                    nuevo.setSiguiente(siguiente);
                }            }           
            tamanio++;
        }
    }
   
    public int getValor(int posicion) throws Exception{        
        if(posicion>=0 && posicion<tamanio){            
            if (posicion == 0) {                
                return inicio.getValor();
            }else{               
                nodo aux = inicio;                
                for (int i = 0; i < posicion; i++) {
                    aux = aux.getSiguiente();
                }                
                return aux.getValor();
            }        
        } else {
            throw new Exception("Posicion inexistente en la lista.");
        }
    }
    
    public boolean buscar(int referencia){        
        nodo aux = inicio;       
        boolean encontrado = false;        
        while(aux != null && encontrado != true){            
            if (referencia == aux.getValor()){               
                encontrado = true;
            }
            else{               
                aux = aux.getSiguiente();
            }
        }       
        return encontrado;
    }
    
    public int getPosicion(int referencia) throws Exception{        
        if (buscar(referencia)) {            
            nodo aux = inicio;           
            int cont = 0;            
            while(referencia != aux.getValor()){               
                cont ++;                
                aux = aux.getSiguiente();
            }           
            return cont;       
        } else {
            throw new Exception("Valor inexistente en la lista.");
        }
    }
    
    public void editarPorReferencia(int referencia, int valor){
       
        if (buscar(referencia)) {           
            nodo aux = inicio;            
            while(aux.getValor() != referencia){
                aux = aux.getSiguiente();
            }           
            aux.setValor(valor);
        }
    }
   
    public void editarPorPosicion(int posicion , int valor){        
        if(posicion>=0 && posicion<tamanio){            
            if(posicion == 0){                
                inicio.setValor(valor);
            }
            else{               
                nodo aux = inicio;               
                for (int i = 0; i < posicion; i++) {
                    aux = aux.getSiguiente();
                }               
                aux.setValor(valor);
            }
        }
    }
    
    public void removerPorReferencia(int referencia){        
        if (buscar(referencia)) {            
            if (inicio.getValor() == referencia) {                
                inicio = inicio.getSiguiente();
            } else{                
                nodo aux = inicio;                
                while(aux.getSiguiente().getValor() != referencia){
                    aux = aux.getSiguiente();
                }               
                nodo siguiente = aux.getSiguiente().getSiguiente();                
                aux.setSiguiente(siguiente);  
            }           
            tamanio--;
        }
    }   

      
    public void removerPorPosicion(int posicion){       
        if(posicion>=0 && posicion<tamanio){           
            if(posicion == 0){                
                inicio = inicio.getSiguiente();
            }          
            else{              
                nodo aux = inicio;               
                for (int i = 0; i < posicion-1; i++) {
                    aux = aux.getSiguiente();
                }               
                nodo siguiente = aux.getSiguiente();               
                aux.setSiguiente(siguiente.getSiguiente());
            }
            
            tamanio--;
        }
    }
        
    public void listar(){       
        if (!esVacia()) {           
            nodo aux = inicio;            
            int i = 0;            
            while(aux != null){               
                System.out.print(i + ".[ " + aux.getValor() + " ]" + " ->  ");                
                aux = aux.getSiguiente();               
                i++;
            }
        }
    }
}

CLASE MAIN

package Trabajo;

/**
 *
 * @author Jhon
 */
public class Main {
     public static void main(String[] args) throws Exception {
        Lista lista = new Lista();
        
        System.out.println("<<-- Ejemplo de lista simple -->>\n");
        
        // Agregar al final de la lista
        lista.agregarAlFinal(12);
        lista.agregarAlFinal(15);
        lista.agregarAlFinal(9);
        // Agregar in inicio de la lista
        lista.agregarAlInicio(41);
        lista.agregarAlInicio(6);
        
        System.out.println("<<-- Lista -->>");
        lista.listar();
        
        System.out.println("\n\n<<-- Tamaño -->");
        System.out.println(lista.getTamanio());
        
        System.out.println("\n<<-- Obtener el valor del nodo en la posicion 3 -->>");
        System.out.println(lista.getValor(3));
        
        System.out.println("\nInsrta un nodo con valor 16 despues del 15");
        lista.insertarPorReferencia(15, 16);
        lista.listar();
        System.out.print(" | Tamaño: ");
        System.out.println(lista.getTamanio());
        
        System.out.println("\n\nInsrta un nodo con valor 44 en la posición 3");
        lista.insrtarPorPosicion(3, 44);
        lista.listar();
        System.out.print(" | Tamaño: ");
        System.out.println(lista.getTamanio());
        
        System.out.println("\nActualiza el valor 12 del tercer nodo por 13");
        lista.editarPorReferencia(12, 13);
        lista.listar();
        System.out.print(" | Tamaño: ");
        System.out.println(lista.getTamanio());
        
        System.out.println("\nActualiza el valor nodo en la posición 0 por 17");
        lista.editarPorPosicion(0, 17);
        lista.listar();
        System.out.print(" | Tamaño: ");
        System.out.println(lista.getTamanio());
        
        System.out.println("\nElimina el nodo con el valor 41");
        lista.removerPorReferencia(41);        
        lista.listar();
        System.out.print(" | Tamaño: ");
        System.out.println(lista.getTamanio());
        
        System.out.println("\nElimina el nodo en la posición 4");
        lista.removerPorPosicion(4);        
        lista.listar();
        System.out.print(" | Tamaño: ");
        System.out.println(lista.getTamanio());
        
        System.out.println("\nConsulta si existe el valor 30");
        System.out.println(lista.buscar(30));
        
        System.out.println("\nConsulta la posicion del valor 9");
        System.out.println(lista.getPosicion(9));
        
//        System.out.println("\nElimina la lista");
//        lista.eliminar();
        
        System.out.println("\nConsulta si la lista está vacia");
        System.out.println(lista.esVacia());
        
        System.out.println("\n\n<<-- Fin de ejemplo lista simple -->>");
    }   
}

Referencia Concepto : Bryan Acosta estudiante de Ingeniería en Informática de la Universidad Central del Ecuador.


PILAS Y COLAS

Las pilas y colas son estructuras de datos que se utilizan generalmente para simplificar ciertas operaciones de programación. Estas estructuras pueden implementarse mediante arrays o mediante listas enlazadas; en estos ejemplos solo trabajaremos con arrays

PILAS : Una pila (stack en inglés) es parte de los TDA (Tipos Abstractos de Datos) es una lista ordenada o estructura de datos en la que el modo de acceso a sus elementos es de tipo LIFO (último en entrar, primero en salir) que permite almacenar y recuperar datos.

COLAS : Una cola (también llamada fila) es otro TDA, es una estructura de datos, caracterizada por ser una secuencia de elementos en la que la operación de inserción push se realiza por un extremo y la operación de extracción pop por el otro. También se le llama estructura FIFO , debido a que el primer elemento en entrar será también el primero en salir.

Ejemplo de mostrar por Pila

/**
 *
 * @author Jhon
 */
public class usoPila {
private pila Pila;
private int tamPila;
public usoPila()
{
this.tamPila = 10;
this.Pila = new pila(this.tamPila);
}
public usoPila(int tp)
{
this.tamPila = tp;
this.Pila = new pila(this.tamPila);
}
public void LLenarPilaAleatorio(int rango)
{
while(this.Pila.Apilar((int)(Math.random()*rango))){}
}
        public void momstrarPila(){
            for (int i = 0; i < Pila.getCabPila(); i++) {
                System.out.println(" "+(this.Pila.getRepPila()[i]));
            }
        }
        
        public static void main(String[] args) {
        usoPila up=new usoPila(8);
        up.LLenarPilaAleatorio(10);
        up.momstrarPila();
     
        
    }    
}



Ejemplo de mostrar por Cola
/**
 *
 * @author Jhon
 */
public class UsoCola {
private cola Cola;
private int tamCola;
private cola tempcola;
private int tamcola1;

    public UsoCola() {
        this.tamCola = 10;
        this.Cola = new cola(this.tamCola);
    
    }

    public UsoCola(int tp) {
        this.tamCola = tp;
        this.Cola = new cola(this.tamCola);
    }

    public void LLenarColaAleatorio(int rango) {
        while (this.Cola.Meter((int) (Math.random() * rango))) {
        }
    }

    public void momstrarCola() {
        for (int i = 0; i < Cola.getCabCola(); i++) {
            System.out.println(" " + (this.Cola.getRepCola()[i]));
        }
    }
    public void pasar_otra_cola()
    {for(int i=0;i<this.tempcola.getMaxCola();i++)
        {this.tempcola.Meter(this.Cola.sacar());}
    }
    
    public void momstrarCola1() {
        for (int i = 0; i < Cola.getCabCola(); i++) {
            System.out.println(" " + (this.Cola.getRepCola()[i]));
        }
    }

    public static void main(String[] args) {
        UsoCola up = new UsoCola(8);
        up.LLenarColaAleatorio(10);
        up.momstrarCola();
        up.pasar_otra_cola();
        up.momstrarCola1();

    }
}

Referencia de Concepto : Ing. Juan Astudillo R.

domingo, 23 de octubre de 2016

ARCHIVO-JAVA-ALGORITMOS

El tema de hoy es crear , escribir y para leer un archivo en java.

La segunda clase muestra como leer el contenido de un archivo de texto, se trabajara con el nombre del archivo de la clase anterior.


El objetivo es utilizar clases para escribir sobre archivo [Binarios o de texto] y usar accesos secuenciales o aleatorios para obtener el contenido de los archivos [Binarios o de Texto].


A mi se me facilito el uso de archivos de texto y por eso uso 3 métodos que son muy importantes, y de los cuales se muestran a continuación:

1) File (Para crear el archivo)
2) FileWriter (Para escribir sobre el archivo)
3) FileReader (Para leer el archivo)
El método write de la clase FileWriter es el que se encarga de escribir sobre el archivo de texto. Para no hacer largo esto, aqui estan las clases:
--------------------------------------------------------------------------------------------------------------------------
Clase que permite escribir en un archivo de texto
--------------------------------------------------------------------------------------------------------------------------
//Importamos clases que se usaran
import java.io.File;
import java.io.FileWriter;

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

//Un texto cualquiera guardado en una variable
String saludo="Hola";

try
{
//Crear un objeto File se encarga de crear o abrir acceso a un archivo que se especifica en su constructor
File archivo=new File("texto.txt");

//Crear objeto FileWriter que sera el que nos ayude a escribir sobre archivo
FileWriter escribir=new FileWriter(archivo,true);

//Escribimos en el archivo con el metodo write
escribir.write(saludo);

//Cerramos la conexion
escribir.close();
}

//Si existe un problema al escribir cae aqui
catch(Exception e)
{
System.out.println("Error al escribir");
}
}
}
--------------------------------------------------------------------------------------------------------------------------
Clase que permite leer un archivo de texto
--------------------------------------------------------------------------------------------------------------------------
//Importamos clases a usar
import java.io.FileReader;
import java.io.BufferedReader;
public class Leer
{
public static void main(String arg[])
{
//Creamos un String que va a contener todo el texto del archivo
String texto="";

try
{
//Creamos un archivo FileReader que obtiene lo que tenga el archivo
FileReader lector=new FileReader("texto.txt");

//El contenido de lector se guarda en un BufferedReader
BufferedReader contenido=new BufferedReader(lector);

//Con el siguiente ciclo extraemos todo el contenido del objeto "contenido" y lo mostramos
while((texto=contenido.readLine())!=null)
{
System.out.println(texto);
}
}

//Si se causa un error al leer cae aqui
catch(Exception e)
{
System.out.println("Error al leer");
}
}
}

--------------------------------------------------------------------------------------------------------------------------
Por ultimo, un ejemplo de la ruta del archivo
--------------------------------------------------------------------------------------------------------------------------
import java.io.*;


public class Archivo{


public File crearArchivo(String ruta) {
File file = null;
try {
file = new File(ruta);
if (!file.exists()) {
file.createNewFile();
}
} catch (Exception e) {
System.out.println(e.getMessage());
}
return file;
}


public ObjectOutputStream escribeArchivo(String ruta) {
ObjectOutputStream oos = null;
try {
FileOutputStream fos = new FileOutputStream(crearArchivo(ruta));
oos = new ObjectOutputStream(fos);
} catch (Exception e) {
System.out.println(e.getMessage());
}
return oos;
}


public ObjectInputStream leerArchivo(String ruta) {
ObjectInputStream ois = null;
try {
FileInputStream fis = new FileInputStream(crearArchivo(ruta));
ois = new ObjectInputStream(fis);
} catch (Exception e) {
System.out.println(e.getMessage());
}
return ois;
}

}
--------------------------------------------------------------------------------------------------------------------------
Ruta---- Aquí tenemos un ejemplo
--------------------------------------------------------------------------------------------------------------------------

package jhon;


/**

*

* @author usuario

*/

import java.io.*;

import java.io.RandomAccessFile;


public class Metodo2 {

Archivo archive = new Archivo();

ObjectInputStream escribiendo;

ObjectOutputStream leyendo;

String ruta = "/D:/Busqueda.txt";----------- Aqui indicamos la ruta de nuestro archivo, aqui lo estamos creando como un documento de tipo txt, que se encuentra ubicado en el disco local D.


Numero[] V = new Numero[10];
public void ingresar() {

for (int i = 0; i < V.length; i++) {

this.V[i].setX(3,1,6,7,5,8);

}
}

public void mostrar( ) {

for (int i = 0; i < V.length; i++) {

System.out.println(V[i]);

}

}


public void buscar(){

for (int i=0; i<V.length;i++){

System.out.println("ingresar numero a buscar");

System.out.println(V[i]);

}

}

void intercambiar(int x[], int i, int j) {

int temp = x[ i ];

x [i] = x [ j ];

x[j] = temp;

}

public void ordenar() {

for (int i = 0; i < V.length;i++ ){

for (int j = i + i; j <V.length; j++) {

if (V[j].getX() < V[i].getX()) {

intercambiar(V, i, j);

}

}

}

}

private void intercambiar(Numero[] V, int i, int j) {

throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.

}

}

--------------------------------------------------------------------------------------------------------------------------
Autor : cuchox
Pagina de Ayuda: http://curiotecnology.blogspot.pe/
--------------------------------------------------------------------------------------------------------------------------

domingo, 4 de septiembre de 2016

Java - Arrays


Java - Arrays


Java proporciona una estructura de datos, la matriz , que almacena una colección de tamaño fijo secuencial de elementos del mismo tipo. Una matriz se utiliza para almacenar una colección de datos, pero a menudo es más útil pensar en una matriz como una colección de variables del mismo tipo.
En lugar de declarar las variables individuales, como Number0, número1, ..., y number99, se declara una variable de matriz tales como números y uso de los números [0], números [1], y, números ... [99] para representar variables individuales.

Declaración de variables de matriz:

Para utilizar una matriz en un programa, debe declarar una variable para hacer referencia a la matriz, y se debe especificar el tipo de matriz de la variable puede hacer referencia. Aquí es la sintaxis para declarar una variable de matriz:
dataType[] arrayRefVar;   // preferred way.

or

dataType arrayRefVar[];  //  works but not preferred way.
Nota: El estilo [] arrayRefVar tipoDatos se prefiere. El estilo tipoDatos arrayRefVar [] proviene del lenguaje C / C ++ y se adoptó en Java para dar cabida a los programadores de C / C ++.

Ejemplo:

Los siguientes fragmentos de código son ejemplos de esta sintaxis:
double[] myList;         // preferred way.

or

double myList[];         //  works but not preferred way.

Creación de matrices:

Puede crear una matriz utilizando el operador new con la siguiente sintaxis:
arrayRefVar = new dataType[arraySize];
La declaración anterior hace dos cosas:
  • Se crea una matriz usando nuevo tipo de datos [arraySize de];
  • Se asigna la referencia de la matriz recién creada a la arrayRefVar variable.
Declarar una variable de matriz, la creación de una matriz, y la asignación de la referencia de la matriz a la variable se pueden combinar en una sola declaración, como se muestra a continuación:
dataType[] arrayRefVar = new dataType[arraySize];
Como alternativa, puede crear matrices de la siguiente manera:
dataType[] arrayRefVar = {value0, value1, ..., valuek};
Los elementos de la matriz se accede a través del índice . Los índices de matriz se basan 0-; es decir, que empiezan desde 0 a arrayRefVar.length-1 .

Ejemplo:

declaración siguiente declara una variable de matriz, miLista, crea una matriz de 10 elementos de tipo doble y asigna su referencia a miLista:
double[] myList = new double[10];
La siguiente imagen representa matriz miLista. Aquí, miLista tiene diez valores dobles y los índices son de 0 a 9.
matriz de Java

Las matrices de procesamiento:

Al procesar elementos de la matriz, que a menudo utilizan ya sea por lazo o bucle foreach porque todos los elementos de una matriz son del mismo tipo y el tamaño de la matriz es conocida.

Ejemplo:

Aquí está un ejemplo completo de mostrar cómo crear, inicializar y el proceso de matrices:
public class TestArray {

   public static void main(String[] args) {
      double[] myList = {1.9, 2.9, 3.4, 3.5};

      // Print all the array elements
      for (int i = 0; i < myList.length; i++) {
         System.out.println(myList[i] + " ");
      }
      // Summing all elements
      double total = 0;
      for (int i = 0; i < myList.length; i++) {
         total += myList[i];
      }
      System.out.println("Total is " + total);
      // Finding the largest element
      double max = myList[0];
      for (int i = 1; i < myList.length; i++) {
         if (myList[i] > max) max = myList[i];
      }
      System.out.println("Max is " + max);
   }
}
Esto produciría el siguiente resultado:
1.9
2.9
3.4
3.5
Total is 11.7
Max is 3.5

Los bucles foreach:

JDK 1.5 introdujo un nuevo ciclo for conocido como bucle foreach o bucle for mejorado, lo que le permite atravesar la gama completa de forma secuencial sin necesidad de utilizar una variable de índice.

Ejemplo:

El código siguiente muestra todos los elementos de la matriz miLista:
public class TestArray {

   public static void main(String[] args) {
      double[] myList = {1.9, 2.9, 3.4, 3.5};

      // Print all the array elements
      for (double element: myList) {
         System.out.println(element);
      }
   }
}
Esto produciría el siguiente resultado:
1.9
2.9
3.4
3.5

Métodos para pasar matrices:

Al igual que puede pasar valores de tipos simples de métodos, también puede pasar matrices a los métodos. Por ejemplo, el método siguiente muestra los elementos de una matriz int:
public static void printArray(int[] array) {
  for (int i = 0; i < array.length; i++) {
    System.out.print(array[i] + " ");
  }
}
Se puede llamar al pasar una matriz. Por ejemplo, la siguiente sentencia invoca el método printArray para mostrar 3, 1, 2, 6, 4 y 2:
printArray(new int[]{3, 1, 2, 6, 4, 2});

Volviendo una matriz de un Método:

Un método puede devolver una matriz. Por ejemplo, el método que se muestra a continuación devuelve una matriz que es la inversión de otra matriz:
public static int[] reverse(int[] list) {
  int[] result = new int[list.length];

  for (int i = 0, j = result.length - 1; i < list.length; i++, j--) {
    result[j] = list[i];
  }
  return result;
}

La clase Arrays:

La clase java.util.Arrays contiene varios métodos estáticos de clasificación y búsqueda de matrices, matrices de comparación, y llenando elementos de la matriz.Estos métodos están sobrecargados para todos los tipos primitivos.
SNLos métodos con Descripción
1public static int busquedaBinaria (Object [] a, Object key)
Busca en la matriz especificada de objetos (Byte, Int, doble, etc.) para el valor especificado usando el algoritmo de búsqueda binaria. La matriz debe ser ordenada antes de hacer esta llamada. Esto devuelve el índice de la clave de búsqueda, si está incluido en la lista; de lo contrario, (- (+ 1 punto de inserción).
2boolean equals estáticos públicos (larga [] a, a largo [] a2)
Devuelve true si las dos matrices especificadas de productos largos son iguales entre sí. Dos matrices se consideran iguales si ambas matrices contienen el mismo número de elementos, y todos los pares correspondientes de los elementos en las dos matrices son iguales. Esto devuelve cierto si los dos arreglos son iguales. Mismo método podría ser utilizado por todos los demás tipos de datos primitivos (byte, short, int, etc.)
3pública relleno del espacio vacío estático (int [] a, int val)
Asigna el valor int especificado a cada elemento de la matriz especificada de enteros. Mismo método podría ser utilizado por todos los demás tipos de datos primitivos (byte, short, int etc.)
4pública tipo static void (Object [] a)
Ordena la matriz especificada de objetos en orden ascendente, de acuerdo con el ordenamiento natural de sus elementos. Mismo método podría ser utilizado por todos los demás tipos de datos primitivos (byte, short, int, etc.)
Autor  : Anónimo
HTML: www.tutorialspoint.com/java/java_arrays.htm (TRADUCIDO A ESPAÑOL)
tutorialspoint