PDF de programación - UF6.1 Arrays en Java

Imágen de pdf UF6.1 Arrays en Java

UF6.1 Arrays en Javagráfica de visualizaciones

Publicado el 2 de Mayo del 2019
818 visualizaciones desde el 2 de Mayo del 2019
1,2 MB
29 paginas
Creado hace 8a (08/01/2016)
UF6.1

Arrays en Java

Private & Confidential

CONTENIDOS
Introducción
1.
2. Declaración
3. Características
4.
5. Arrays bidimensionales
6. Copying and cloning arrays
7. Ordenar Vectores

Inicialización

Private & Confidential

INTRODUCCIÓN

Almacenar información

Hasta ahora, hemos utilizado variables (atributos, parámetros o variables
locales) para almacenar los datos que nos hacían falta. Imagina que en un
programa nos piden almacenar la nota de 100 alumnos que van a hacer un
examen y además nos piden que obtengamos la nota media. No parece
muy operativo tener 100 variables en nuestro programa y si además el
número de alumnos aumentase hasta 200 ó 1000…¿qué harías?

La solución a esto se llama arrays o vectores (son sinónimos).

Private & Confidential

INTRODUCCIÓN

Array

Un array se compone de una serie de posiciones consecutivas en memoria.
A los vectores se accede mediante un índice: mi_vector[índice]

Los arrays puden ser de varias dimensiones.

Private & Confidential

ARRAY

Declaración

En Java se pueden declarar vectores de dos formas diferentes:

<tipo> [] <nombre> ;
<tipo> <nombre> [] ;

Por ejemplo, para declarar un array de números enteros utilizaremos la siguiente
sentencia:

int [] sueldos;

El array aún no ha sido creado, sino meramente declarado. Java trata los vectores
como si fueran objetos, por lo tanto para crear el Array (reservar su memoria e
inicializarlo) deberemos recurrir al operador new:

sueldos = new int [5];

Private & Confidential

ARRAY

Características 1/2

Algunas de sus características más importantes de los arrays son las
siguientes:

1.

2.

3.

4.

Los arrays se crean con el operador new seguido del tipo y número de
elementos.
Se puede acceder al número de elementos de un array con la variable
miembro implícita length (por ejemplo, vect.length).
Se accede a los elementos de un array con los corchetes [] y un índice
que varía de 0 a length-1.
Se pueden crear arrays de objetos de cualquier tipo. En principio un
array de objetos es un array de referencias que hay que completar
llamando al operador new.

Private & Confidential

ARRAY

Características 2/2

5.

Los elementos de un array se inicializan al valor por defecto del tipo
correspondiente (cero para valores numéricos, la cadena vacía para
Strings, false para boolean, null para referencias).

6. Como todos los objetos, los arrays se pasan como argumentos a los

métodos por referencia.

7. Como todo objeto Java, hereda de la clase Object sus métodos.

Especial interés tienen:



equals: permite saber si dos referencis son el mismo objeto.
clone: duplica un objeto

Private & Confidential

ARRAY

Inicialización

Existen diferentes formas :

1. Los arrays se pueden inicializar con valores entre llaves {...} separados por

comas.

int c = 15;
int[] primes = { 1, 2, 3, 5, 7, 9, 11 };
int[] a = { 1, primes[2], c, (int) Math.pow(2,2) };

2. También los arrays de objetos se pueden inicializar con varias llamadas a new

dentro de unas llaves {...}.

3. Si se igualan dos referencias a un array no se copia el array, sino que se tiene un

array con dos nombres, apuntando al mismo y único objeto:

luckyNumbers = smallPrimes;

Private & Confidential

ARRAY

Acceso – Para practicar

Private & Confidential

ARRAY

Un ejemplo – Para practicar

Private & Confidential

ARRAY

Más ejemplos – Para practicar

A continuación se presentan algunos ejemplos de creación de arrays:

// crear un array de 10 enteros, que por defecto se inicializan a cero
int v[] = new int[10];

// crear arrays inicializando con determinados valores
int v[] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9};
String dias[] = {"lunes", "martes", "miercoles", "jueves", "viernes", "sabado",
"domingo"};

// array de 5 objetos
MiClase listaObj[] = new MiClase[5]; // de momento hay 5 referencias a null
for( i = 0 ; i < 5;i++)

listaObj[i] = new MiClase(...);

// array anónimo
obj.metodo(new String[]={"uno", "dos", "tres"});

Private & Confidential

ARRAYS BIDIMENSIONALES

Definición

Los arrays bidimensionales de Java se crean de un modo muy similar al de C++ (con
reserva dinámica de memoria).

En Java una matriz es un vector de vectores fila, o más en concreto un vector de
referencias a los vectores fila. Con este esquema, cada fila podría tener un número
de elementos diferente.

Private & Confidential

ARRAYS BIDIMENSIONALES

Creación

Una matriz se puede crear directamente en la forma:

int [][] mat = new int[3][4];

o bien se puede crear de modo dinámico dando los siguientes pasos:

1. Crear la referencia indicando con un doble corchete que es una referencia

a matriz:

int[][] mat;

Crear el vector de referencias a

las filas: mat = new int[nfilas][];

Reservar memoria para los vectores correspondientes a

las filas: for (int i=0; i<nfilas; i++);

mat[i] = new int[ncols];

2.

3.

Private & Confidential

ARRAYS BIDIMENSIONALES

Ejemplos

A continuación se presentan algunos ejemplos de creación de arrays
bidimensionales:

// crear una matriz 3x3
// se inicializan a cero
double mat[][] = new double[3][3];
int [][] b = {

{1, 2, 3},
{4, 5, 6}, // esta coma es permitida

};

int c = new[3][]; // se crea el array de referencias a arrays
c[0] = new int[5];
c[1] = new int[4];
c[2] = new int[8];

En el caso de una matriz b, b.length es el número de filas y b[0].length es el
número de columnas (de la fila 0).

Por supuesto, los arrays bidimensionales pueden contener tipos primitivos
de cualquier tipo u objetos de cualquier clase.

Private & Confidential

ARRAYS BIDIMENSIONALES

Ejemplo: Matriz Unidad

package matrizUnidad;

public class MatrizUnidadApp {

public static void main (String[] args) {
double[][] mUnidad= new double[4][4];

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

for (int j=0; j < mUnidad[i].length; j++) {

if (i == j) {

}else {

mUnidad[i][j]=1.0;

mUnidad[i][j] = 0.0;

}

}

}

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

for (int j=0; j < mUnidad[i].length; j++) {
System.out.print(mUnidad[i][j]+"\t");

}
System.out.println("");

}

try{

//espera la pulsación de una tecla y luego RETORNO

System.in.read();

}catch (Exception ex) { }

}

}

Private & Confidential

COPYING ARRAYS

System method arraycopy()

Arrays can be copied using the Java System method arraycopy():

public static native void arraycopy

(Object src, int src_position, Object dst,
int dst_position, int length)

Copies a region of the source array, src, beginning at the array cell src_position, to
the destination array, dst, beginning at the cell dst_position in the destination. The
number of cells copied is equal to the length argument.

Parameters:

src - the source array.
src_position - start position (first cell to copy) in the source array.
dst - the destination array.
dst_position - start position in the destination array.
length - the number of array elements to be copied.

Note: arraycopy does not allocate memory for the destination array; the memory
must already be allocated.

Private & Confidential

COPYING ARRAYS

System method arraycopy()

Example, arraycopy()

int[] primes = { 1, 2, 3, 5, 7, 9, 11 };

int[] c = new int[ primes.length ];

System.arraycopy( primes, 0, c, 0, primes.length);

// copy array primes to array c

Private & Confidential

CLONING ARRAYS

Clone ()

By default, all Java arrays support the clone method

public class ArrayClone
{

public static void main( String[] args )
{

int[] primes = { 1, 2, 3, 5, 7, 11, 13, 17 };
int[] backup;

backup = (int[]) primes.clone();
backup[0] = 0;

System.out.println( "Primes: " );
for( int i=0 ; i < primes.length ; i++ )

System.out.print( " " + primes[i] );

System.out.println( "\nbackup: With first Element Modified" );
for( int j=0 ; j < backup.length ; j++ )

System.out.print(" " + backup[j] );

}

}

Private & Confidential

ORDENAR VECTORES

Estrategia

El ordenamiento de un vector se logra intercambiando las componentes de manera
que:

vec[0] <= vec[1] <= vec[2] etc.

El contenido de la componente vec[0] sea menor o igual al contenido de la
componente vec[1] y así sucesivamente.

Si se cumple lo dicho anteriormente decimos que el vector está ordenado de
menor a mayor.

Igualmente podemos ordenar un vector de mayor a menor.

Se puede ordenar tanto vectores con componentes de tipo int, float como String
(en este último caso el ordenamiento es alfabético).

Private & Confidential

ORDENAR VECTORES

Planteamiento del problema

Se debe crear un vector donde almacenar 5 sueldos. Ordenar el vector sueldos de
menor a mayor.

Private & Confidential

ORDENAR VECTORES

Estrategia

Esta primera aproximación tiene por objetivo analizar los intercambios de
elementos dentro del vector.

El algoritmo consiste en comparar si la primera componente es mayor a la
segunda, en caso que la condición sea verdadera, intercambiamos los contenidos
de las componentes.

Vamos a suponer que se ingresan los siguientes valores por teclado:

1200
750
820
550
490

En este ejemplo: ¿es 1200 mayor a 750? La respuesta es verdadera, por lo tanto
intercambiamos el contenido de la componente 0 con el de la componente 1.

Luego comparamos el contenido de la componente 1 con el de la componente 2:
¿Es 1200 mayor a 820?

La respuesta es verdadera entonces intercambiamos.

Private & Confidential

ORDENAR VECTORES

Estrategia

Si hay 5 componentes hay que hacer 4 comparaciones, por eso el for se repite 4
veces.

Generalizando: si el vector tiene N componentes hay que hacer N-1
comparaciones.

Cuando

f = 0

750
1200
820
550
490

f = 1

750
820
1200
550
490

f = 2

750
820
550
1200
490

f = 3

750
820
550
490
1200

Podemos ver cómo el valor más grande del vector desciende a la última
componente. Empleamos una variable auxiliar (aux) para el proceso de
intercambio:

aux=sueldos[f];
sueldos[f]=sueldos[f+1];
sueldos[f+1]=aux;

Private & Confidential

ORDENAR VECTORES

Estrategia

Al salir del for en este ejemplo el contenido del vector es el siguiente:

750
820
550
490
1200

Anal
  • Links de descarga
http://lwp-l.com/pdf15831

Comentarios de: UF6.1 Arrays en Java (0)


No hay comentarios
 

Comentar...

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios...
CerrarCerrar
CerrarCerrar
Cerrar

Tienes que ser un usuario registrado para poder insertar imágenes, archivos y/o videos.

Puedes registrarte o validarte desde aquí.

Codigo
Negrita
Subrayado
Tachado
Cursiva
Insertar enlace
Imagen externa
Emoticon
Tabular
Centrar
Titulo
Linea
Disminuir
Aumentar
Vista preliminar
sonreir
dientes
lengua
guiño
enfadado
confundido
llorar
avergonzado
sorprendido
triste
sol
estrella
jarra
camara
taza de cafe
email
beso
bombilla
amor
mal
bien
Es necesario revisar y aceptar las políticas de privacidad