Pregunta

Esta es, probablemente, muy simple, pero que realmente no podía palabra correctamente en Google. Tengo un ArrayList que mantiene la información para cada hilo. Cada hilo tiene su propio ID. Así, al comienzo:

myList.add(theIdOfTheThread, new InfoForTheThread()); //Add new thread info at index theIdOfTheThread

Y cuando quiero Info:

myList.get(myId); //The info for the thread

Sin embargo, siempre me OutOfRangeExceptions cada vez que un hilo más bajos acabados y elimina su entrada, etc Por lo tanto, estoy seguro de que debe haber una clase mejor utilizar para esto, en que sólo puedo poner las entradas en cualquier índice que quiero, y tirar de ellos hacia fuera en cualquier índice que quiero y que quede.

¿Fue útil?

Solución

Para ese tipo de acceso que realmente debería estar usando una matriz, o mejor, un HashMap. Usando una lista para esto es muy ineficiente e innecesariamente complicado. Si alguna vez eliminar un elemento de la mitad de la lista todo lo que se mueve hacia abajo, y todos los índices mayores a la que eliminarla, será necesario mover hacia abajo.

Una serie de InfoForTheThread no sufrirá esto, pero usted necesitará saber el tamaño de la matriz que necesita antes de empezar.

Utilice un HashMap lugar -. Puede utilizar enteros para las teclas, y la eliminación no dará lugar a una resecuenciación

HashMap<Integer,InfoForTheThread> myInfos = new HashMap<Integer,InfoForTheThread>( 10 );

Adición, recuperar y eliminar una entrada:

myInfos.put( Integer.valueOf( 4 ), new InfoForTheThread() );
InfoForTheThread infoForFour = myInfos.get( Integer.valueOf( 4 ) );
InfoForTheThread infoForFour = myInfos.remove( Integer.valueOf( 4 ) );

Otros consejos

Trate de una tabla hash. se puede utilizar el ID del tema como la clave y después inserte su información como los valores.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top