这可能非常简单,但我真的无法在谷歌上正确说出来.我有一个ArrayList来保存每个线程的信息.每个线程都有自己的ID.所以,在开始时:
myList.add(theIdOfTheThread, new InfoForTheThread()); //Add new thread info at index theIdOfTheThread
当我想要信息时:
myList.get(myId); //The info for the thread
但是,每当较低的线程完成并删除它的条目等时,我总是得到OutOfRangeExceptions.所以,我确信必须有一个更好的类来使用它,我可以把条目放在我想要的任何索引,并拉它们在我想要的任何指数,他们留下来.
对于那种访问,你应该使用一个数组,或者更好的是一个HashMap.使用列表是非常低效和不必要的复杂.如果你从列表中间删除一个项目,一切都会向下移动,而你删除的那个上面的所有索引都需要向下移动.
InfoForTheThread数组不会受此影响,但您需要在开始之前知道所需的数组大小.
使用HashMap - 您可以使用Integers作为键,并且删除不会导致重新排序.
HashMapmyInfos = new HashMap ( 10 );
添加,检索和删除条目:
myInfos.put( Integer.valueOf( 4 ), new InfoForTheThread() ); InfoForTheThread infoForFour = myInfos.get( Integer.valueOf( 4 ) ); InfoForTheThread infoForFour = myInfos.remove( Integer.valueOf( 4 ) );