2

我想将一系列对象加载到 ArrayList 中,并返回添加位置的索引,以便以后可以直接从 ArrayList 中使用它。这类似于我为一个图形加载一组 5 帧并直接从列表中调用第 3 帧的数据。
在查看了一些可能相关的潜在帖子后,我发现了一些相关的东西,这让我感到好奇。甚至有内置函数来获取最近添加的对象的索引吗?

我正在查看的链接让我想到了这一点:ArrayList indexOf() 返回错误的索引?

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

    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

4 回答 4

6

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

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

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

但我想知道你为什么需要这样做。如果您更多地解释您要达到的目标,可能会有不同/更好的方法来获得相同的结果。

于 2012-05-09T10:33:34.937 回答
2

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

于 2012-05-09T10:36:16.953 回答
0

ArrayList您可以使用Map<Integer,FrameData>. 你可以Integer用任何可能更适合你的项目的东西来替换。

于 2012-05-09T10:57:22.417 回答
0

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

简而言之,

  1. 如果您只是想通过自己的键/递增键存储和检索 -> 使用 HashMap。
  2. 如果排序很重要,请使用列表。
于 2012-05-09T10:54:32.753 回答