Java ArrayList
Java ArrayList
MTODOS DE ARRAYLIST
MTODO
DESCRIPCIN
size()
add(X)
add(posicin, X)
get(posicion)
remove(posicion)
posicin
indicada.
eliminado.
Devuelve
el
elemento
remove(X)
clear()
set(posicin, X)
contains(X)
indexOf(X)
RECORRER UN ARRAYLIST
Podemos recorrerlo de forma clsica con un bucle for:
for(int i = 0;i<array.size();i++){
System.out.println(array.get(i));
}
Con un bucle foreach:
Si suponemos el array de enteros llamado numeros:
for(Integer i: numeros){
System.out.println(i);
}
Si el array contiene objetos de tipos distintos o desconocemos el tipo:
for(Object o: nombreArray){
System.out.println(o);
}
Utilizando un objeto Iterator.
http://docs.oracle.com/javase/7/docs/api/java/util/Iterator.html
La ventaja de utilizar un Iterador es que no necesitamos indicar el tipo de objetos que
contiene el array.
Iterator tiene como mtodos:
hasNext: devuelve true si hay ms elementos en el array.
next: devuelve el siguiente objeto contenido en el array.
Ejemplo:
ArrayList<Integer> numeros = new ArrayList<Integer>();
..
//se insertan elementos
.....
X.
double suma = 0;
for(Integer i: numeros){
suma = suma + i;
}
System.out.println("Suma: " + suma);
System.out.println("Media: " + suma/numeros.size());
COPIAR UN ARRAYLIST
El nombre de un ArrayList contiene la referencia al ArrayList, es decir, la direccin de
memoria donde se encuentra el ArrayList, igual que sucede con los arrays estticos.
Si disponemos de un ArrayList de enteros llamado ventas:
La instruccin:
ArrayList<Integer> ventas1 = ventas;
No copia el array ventas en el nuevo array ventas1 sino que crea un alias:
1.
-
8.50
6.35
5.75
8.50
notas[0]
notas[1]
notas[2]
notas[3]
3.75
6.00
notas[17] notas[18]
7.40
notas[19]
Para acceder a cada elemento del array se utiliza el nombre del array y un ndice que
indica la posicin que ocupa el elemento dentro del array.
El ndice se escribe entre corchetes.
El primer elemento del array ocupa la posicin 0, el segundo la posicin 1, etc. En
un array de N elementos el ltimo ocupar la posicin N-1.
En el ejemplo anterior, notas[0] contiene la nota del primer alumno y notas[19]
contiene la del ltimo
Los ndices deben ser enteros no negativos.
2.
3.
Si se intenta acceder a un elemento que est fuera de los lmites del array (un
elemento con ndice negativo o con un ndice mayor que el que corresponde al ltimo
elemento del array) el compilador no avisa del error. El error se producir durante la
ejecucin.
En
ese
caso
se
lanza
una
excepcin
java.lang.ArrayIndexOutOfBoundsException.
Se puede saber el nmero de elementos del array mediante el atributo length.
Podemos utilizar length para comprobar el rango del array y evitar errores de acceso.
Por ejemplo, para asignar un valor a un elemento del array que se lee por teclado:
Scanner sc = new Scanner(System.in);
int i, valor;
int [] a = new int[10];
System.out.print("Posicin: ");
i = sc.nextInt();
System.out.print("Valor: ");
valor = sc.nextInt();
if (i>=0 && i < a.length) {
a[i] = valor;
}
4.
int numAlum, i;
double suma = 0, media;
do {
System.out.print("Nmero de alumnos de la clase: ");
numAlum = sc.nextInt();
} while (numAlum <= 0);
double[] notas = new double[numAlum]; //se crea el array
// Entrada de datos. Se asigna a cada elemento del array
// la nota introducida por teclado
for (i = 0; i < notas.length; i++) {
System.out.print("Alumno " + (i + 1) + " Nota final: ");
notas[i] = sc.nextDouble();
}
// Sumar todas las notas
for (i = 0; i < notas.length; i++) {
suma = suma + notas[i];
}
// Calcular la media
media = suma / notas.length;
// Mostrar la media
System.out.printf("Nota media del curso: %.2f %n", media);
// Mostrar los valores superiores a la media
System.out.println("Listado de notas superiores a la media: ");
for (i = 0; i < notas.length; i++) {
if (notas[i] > media) {
System.out.println("Alumno numero " + (i + 1)+ " Nota final: " + notas[i]);
}
}
}
}
Recorrer un Array en java con foreach. Bucle for para colecciones
A partir de java 5 se incorpora una instruccin for mejorada para recorrer arrays y
contenedores en general.
Permite acceder secuencialmente a cada elemento del array.
La sintaxis general es:
for(tipo nombreDeVariable : nombreArray){
.
}
tipo: indica el tipo de datos que contiene el array.
nombreDeVariable: variable a la que en cada iteracin se le asigna el valor de cada
elemento del array. Esta definida dentro del for por lo que solo es accesible dentro de
l.
nombreArray: es el nombre del array que vamos a recorrer.
Mediante este bucle solo podemos acceder a los elementos del array. No podemos
hacer modificaciones en su contenido.
Ejemplo: El siguiente programa crea un array temperatura de 10 elementos. Lee por
teclado los valores y a continuacin los muestra por pantalla.
import java.util.*;
public class Recorrerforeach1 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
double [] temperatura = new double[10];
int i;
for(i = 0; i<temperatura.length;i++){
System.out.print("Elemento " + i + ": ");
temperatura[i] = sc.nextDouble();
}
for(double t: temperatura){
System.out.print(t + " ");
}
System.out.println();
}
Calcular
N
la
media
1:
de
una
Ejercicios
serie
de
nmeros
1
que
se
y
leen
por
2
teclado.
Programa Java que lea por teclado 10 nmeros enteros y los guarde en un array. A
continuacin calcula y muestra por separado la media de los valores positivos y la de
los valores negativos.
/*
* Programa que lea por teclado 10 nmeros enteros y los guarde en un array.
* A continuacin calcula y muestra la media de los valores positivos y la de los
valores negativos.
*/
import java.util.*;
public class Media1 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int i;
int pos = 0, neg = 0; //contadores de los nmeros positivos y negativos
int[] numeros = new int[10]; //array que contendr los nmeros ledos por
teclado
double sumaPos = 0, sumaNeg = 0; //acumuladores para las sumas de positivos
y negativos
//lectura de datos y llenar el array
System.out.println("Lectura de los elementos del array: ");
for (i = 0; i < 10; i++) {
System.out.print("numeros[" + i + "]= ");
numeros[i]=sc.nextInt();
}
//recorrer el array para sumar por separado los nmeros positivos
// y los negativos
for (i = 0; i < 10; i++) {
if (numeros[i] > 0){ //sumar positivos
sumaPos += numeros[i];
pos++;
} else if (numeros[i] < 0){ //sumar negativos
sumaNeg += numeros[i];
neg++;
}
}
2. Programa Java que lea 10 nmeros enteros por teclado y los guarde en un array.
Calcula y muestra la media de los nmeros que estn en las posiciones pares del array.
Considera la primera posicin del array (posicin 0) como par.
/*
*
*
*
*/
Leer
en
que
10
un
array.
estn
nmeros
Calcular
en
enteros
la
las
y
media
posiciones
import
guardarlos
de
los
pares.
java.util.*;
public
class
Arrays1_2
sc
=
int
new
numeros
//lectura
de
datos
System.out.println("Lectura
de
for
(i
=
0;
System.out.print("numeros["
numeros[i]
}
y
los
i
Scanner(System.in);
i;
new
int[10];
llenar
el
array
elementos
del
array:
");
<
10;
i++)
{
+
i
+
"]=
");
=
sc.nextInt();
//Recorrer
el
array
y
calcular
la
media
for
(i
=
0;
i
<
10;
i++)
{
if
(i
%
2
==
0){ //si
la
posicin
actual
es
par
media = media + numeros[i]; //se suma el valor de esa posicin
}
}
"+
//Calcular
y
mostrar
la
media
System.out.println("Media de los valores que se encuentran en posiciones pares:
media/5);
}
}
Siguiente relacin de ejercicios bsicos de arrays
59 comentarios:
1.
Annimo17 de noviembre de 2012, 16:35
muy buenos tus programas.... gracias :)
Responder
Respuestas
1.
Annimo25 de abril de 2015, 7:00
En el ejercicio N 1 se presenta un error en el calcula de la media ya que "int pos
= 0, neg = 0; //contadores de los nmeros positivos y negativos" la variable
estan inicializadas a cero(0)y al pasar por el for solo se incrementan hasta (9)
dando un error en la media ( sumaPos / pos), o sea para 10 elementos no divide
por (10) sino que divide por ( 9).