Visual Basic.NET - ArrayList

 
Vista:

ArrayList

Publicado por Alex (5 intervenciones) el 20/09/2007 17:31:12
Hola espero que esten bien...

Tengo una duda con los arrayList....En mi programa creo un arrayList de tamaño "n", pero luego debo insertar valores en distintas posiciones, sin orden específico. L a posición será un índice "i", el cual puede ser primero la posición 4 y luego la 0. Es esto posible?

Hice una prueba a ver si me mostraba bien los valores pero no funcionó. Creé un array de tamaño 4 y utilicé el comando insert() para agregar los valores de forma desordenada:

Dim array as New ArrayList(4)

array.Insert(3, "helado")
array.Insert(1, "quiero")
array.Insert(2, "comer")
array.Insert(0, "yo")

Sin embargo al desplegar los valores me muestra que el de la casilla 3 es null.
Coloqué banderas para ver como se iba guardando las palabras y pude darme cuenta de que si se guardaba la palabra "helado" en la casilla tres...pero al insertar las demás se borraba .

Alguien sabe por qué puede estar pasando esto? No se pueden insertar valores de forma desordenada en el array? (Primero la última casilla y después la primera)

Gracias de antemano
Alex
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:ArrayList

Publicado por Harold V. (411 intervenciones) el 21/09/2007 03:33:03
Si,

Lo que sucede es que intentas insertar donde no existe nada,,,,,,,,,
Logicamente al no existir te dice

Insertion index was out of range. Must be non-negative and less than or equal to size.
Parameter name: index

Y como actualmente nuestro index=0 'ni podemos insertar en la posicion 3

como podemos modificar al menos esto para q nos permita insertarle valores (insertar) no
seria la palabra correcta en este caso sino (modificar)

Dim marray As New ArrayList(4)

For i As Int32 = 0 To marray.Capacity - 1
marray.Add("item vacio")
Next

de esta manera de entrada llenamos los 4 items con "item vacio" entonces ya tenemos
datos en nuestro array ahora modificamos su valor solamente.

marray.Item(3) = "helado"
marray.Item(1) = "quiero"
marray.Item(2) = "comer"
marray.Item(0) = "yo"

For x As Int32 = 0 To marray.Count - 1
MsgBox(marray(x).ToString)
Next
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:ArrayList

Publicado por Alex (5 intervenciones) el 21/09/2007 14:54:40
Harold gracias por tu respuesta... Probare a ver que tal. Yo pense que podia estar ocurriendo por eso y llene el array con puros '0' mediante un For, pero igual dio problemas. Puede ser porque estaba llenandolo inicialmente con el comando .add y todavía no se muy bien como se utiliza.

Gracias por tu tiempo!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar