Código de Java - Array simple dinámico

sin imagen de perfil

Array simple dinámicográfica de visualizaciones


Java

Actualizado el 18 de Agosto del 2019 por Anonymous (3 códigos) (Publicado el 7 de Agosto del 2019)
4.118 visualizaciones desde el 7 de Agosto del 2019
Código fuente muy útil. Permite usar arrays simples de forma dinámica como si fuera un ArrayList pero sin serlo. Puedes probarlo con cualquier wrapper class, aunque yo lo pruebo con Integer.

Requerimientos

El código es probado desde la segunda clase. Puedes usar el código para redimensionar arrays.

2.0
estrellaestrellaestrellaestrellaestrella(5)

Actualizado el 10 de Agosto del 2019 (Publicado el 7 de Agosto del 2019)gráfica de visualizaciones de la versión: 2.0
927 visualizaciones desde el 7 de Agosto del 2019

3.0
estrellaestrellaestrellaestrellaestrella(1)

Publicado el 14 de Agosto del 2019gráfica de visualizaciones de la versión: 3.0
1.068 visualizaciones desde el 14 de Agosto del 2019
estrellaestrellaestrellaestrellaestrella
estrellaestrellaestrellaestrella
estrellaestrellaestrella
estrellaestrella
estrella

Captura-error-array-generics
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
/**
 * 
 * @author Daniel
 *
 * @param <T>
 */
public class DynamicArray<T> {
	Object[] vector;
        //Constructor de la clase
	public DynamicArray() {
		vector = new Object[0];
	}
	//Devuelve el tamaño del array
	public int tamaño() {
		return vector.length;
	}
	//Devuelve el valor con ese índice
	public T obtener(int índice) {
		final T t = (T)vector[índice];
		return t ;
	}
	// Redimensiona el array dandole un a nueva posicion con el argumento frase
 
	public void agregar(T frase) {
		Object aux[] = new Object[vector.length + 1];
		for (int x = 0; x < vector.length; x++) {
			aux[x] = vector[x];
		}
		aux[vector.length] = frase;
		vector = aux;
	}
 
// Borra en una posición indicada y redimensiona el array
	public void borrar(int posicion) {
		if(posicion>=0&&posicion<vector.length) {
			if ((vector.length - 1) != posicion) {
				for (int i = posicion; i < (vector.length - 1); i++) {
					vector[i] = vector[i + 1];
				}
			}
			Object aux[] = new Object[vector.length - 1];
			for (int i = 0; i < aux.length; i++) {
				aux[i] = vector[i];
			}
			vector = aux;
		}else {
			//Ejecuta la excepcion apropiada si posicion se sale de los límites
			throw new ArrayIndexOutOfBoundsException("Has sobrepasado los límites del array");
		}
 
 
	}
 
}
////Clase principal
/**
 * 
 * @author Daniel
 *
 */
public class Prueba {
public static void main(String[] args) {
	DynamicArray<Integer> a = new DynamicArray<Integer>();
	//Añadimos en el array
	for(int i=0;i<10;i++) {
		a.agregar(i);
	}
	//Mostramos lo agregado
	for (int i = 0; i<a.tamaño();i ++) {
		System.out.println("Dentro: "+a.obtener(i));
	}
	//Borramos una posición
	a.borrar(1);
	System.out.println("borrando...");
 
	//Capturamos la excepción ya que sale de los límites
	try {
		Thread.sleep(100);
		a.borrar(99);
 
	} catch (ArrayIndexOutOfBoundsException | InterruptedException e ) {
		System.err.println(e.getMessage());
	}
 
	//Mostramos el array redimensionado desues de borrar
	for (int i = 0; i<a.tamaño();i ++) {
		System.out.println("Dentro: "+a.obtener(i));
	}
}
}



Comentarios sobre la versión: 3.0 (1)

Imágen de perfil
15 de Agosto del 2019
estrellaestrellaestrellaestrellaestrella
"frase" es un nombre que se puede mejorar para el parametro de la funcion agregar. Aun pareciera recordar que habian strings. Que tal "item" o algo asi?

Sugiero eliminar los comentarios obvios (e.g. Constructor, que el metodo tamano devuelve el tamano)

Menos bloques facilitan la lectura.
En la funcion borrar, pon la condicion de excepcion al inicio y elimina el else.

if(condicion problematica) {
throw new ...
}

<las instrucciones cuando el parametro esta bien>

El comentario indica que se "Ejecuta la excepcion apropiada", pero parece mejor decir que se arroja la excepcion, aunque pensandolo mejor, es algo obvio si se lee el codigo, mejor eliminar ese comentario.

En el programa de test, una vez que borras deberias comprobar al menos 2 cosas:
- que el tamano es menor
- que el elemento que borraste ya no esta.
Pero esto se comprueba en el programa mismo, no mostrando el resultado en la salida.
Dicho de otra forma, si tu programa inserta 5 elementos y borra 1, el programa mismo puede comprobar que hay 4 despues de borrar, no tienes que mostrarle al usuario los 4 elementos para que el compruebe si esta bien. No esta mal mostrarlo, pero parece mejor hacer que tu mismo programa de prueba detecte los errores, si es que los hay.

Deberias borrar uno por uno todos los elementos, para probar que no importa el tamano, la funcion borrar siempre funciona.

Dice "desues", creo que quisiste decir "despues"
Responder

Comentar la versión: 3.0

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

4.0

Publicado el 18 de Agosto del 2019gráfica de visualizaciones de la versión: 4.0
2.124 visualizaciones desde el 18 de Agosto del 2019
http://lwp-l.com/s5466