Pergunta

Este é provavelmente muito simples, mas eu realmente não podia palavra-lo corretamente no Google. Eu tenho um ArrayList que mantém a informação para cada segmento. Cada segmento tem sua própria ID. Então, no início:

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

E quando eu quiser informações:

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

Mas, eu sempre chegar OutOfRangeExceptions sempre que um segmento menor acabamentos e remove sua entrada, etc. Então, eu tenho certeza que deve haver uma classe melhor uso para este, onde posso apenas colocar entradas a qualquer índice que eu quero, e retirá-los em qualquer índice que quero e eles ficam.

Foi útil?

Solução

Para esse tipo de acesso que você realmente deve estar usando uma matriz, ou melhor, um HashMap. Usando uma lista para isso é muito ineficiente e desnecessariamente complicado. Se você nunca remover um item a partir do meio da lista de tudo o que se move para baixo, e todos os índices acima do que você removido exigirá movendo para baixo.

Uma matriz de InfoForTheThread não vai sofrer isso, mas você vai precisar saber o tamanho da matriz que você vai precisar antes de começar.

Use um HashMap em vez -. Você pode usar inteiros para as chaves, e remoção não irá resultar em uma resequencing

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

Como adicionar, recuperar e remover uma entrada:

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

Outras dicas

Tente um hashtable. você pode usar o identificador do tópico como a chave e, em seguida, inserir suas informações de como os valores.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top