获取我刚刚添加到Java / Android中的ArrayList的对象的索引

时间:2012-05-09 10:29:07

标签: java android list arraylist indexing

我想将一系列对象加载到ArrayList,并返回添加它的位置的索引,以便稍后可以直接从ArrayList使用它。这类似于我为图形加载一组5帧并直接从列表中调用第3帧的数据。
在环顾几个可能相关的潜在帖子时,我发现了一些与之相关的内容,让我感到惊讶。是否有内置函数来获取最近添加的对象的索引?

我正在查看的链接让我想到这是:ArrayList indexOf() returns wrong index?

基本上,我看待它的方式是我会按照以下伪代码的方式做一些事情:

    private ArrayList<FrameData> mylistofframeshere = new ArrayList();
    FrameData Framenumberone = new FrameData(constructorblah goes in here);
    int wherediditgo = mylistofframeshere.add(Framenumberone);

或者我认为我可以按照

的方式做点什么
    mylistofframeshere.getindex(Framenumberone);

我的编码背景在这一点上更基于程序,所以我更习惯于知道索引是什么,只是为了开始放置数据。我也查看了oracle文档,其结果类似于上面的链接。有什么建议??

编辑:我将在这里添加一些额外的说明,因为我真的没有在示例和解释上投入足够的精力。

尝试使用像列表的直接索引之类的东西的另一个例子是,如果我有一组瓷砖我想用作游戏的地形或其他东西。我会将该区域的一组可能区块加载到中央ArrayList中。在尝试放置这些图块时,我只会引用我在ArrayList中预加载的对象,以便绘制适当的位图/其他。

我对Java仍然有点新意,所以我愿意打赌它只是在我使用这些数据类型的机制中忽略的一些简单。我会继续编辑这个,直到我得到正确的解释。

4 个答案:

答案 0 :(得分:6)

当您向ArrayList添加内容时,它会转到最后一个可用空间。换句话说:

List<FrameData> list = new ArrayList<FrameData>();
list.add(frame1);

FrameData frame = list.get(list.size() - 1); //frame == frame1

但我想知道为什么你需要那样做。如果您详细解释了您想要实现的目标,可能会有不同/更好的方法来获得相同的结果。

答案 1 :(得分:2)

有一种类似ArrayList.indexOf(object);的方法,尝试使用该方法获取对象的索引

答案 2 :(得分:0)

这一切都取决于你想要使用索引的内容。如果您只需要将列表中的每个元素映射到一个键,以便以后可以使用键检索元素,那么您应该考虑使用HashMap。如果您更关心订购,可以使用List。正如有人已经回答的那样,当您将元素添加到列表中时,索引会增加。如果你知道你手头的帧总数,可以通过将大小作为参数传递给它的构造函数来初始化ArrayList,然后通过list.add手动指定索引来添加每个帧(0 ...大小-1,元素)。

简而言之,

  1. 如果您只是想通过自己的密钥存储和检索/ 递增的密钥 - &gt;使用HashMap。
  2. 如果订购很重要,请使用清单。

答案 3 :(得分:0)

您可以使用ArrayList,而不是以这种方式使用Map<Integer,FrameData>。您可以使用可能更适合您项目的任何内容替换Integer