最后添加到arraylist的元素是什么?

aydmsdu9  于 2021-06-30  发布在  Java
关注(0)|答案(1)|浏览(322)

例如:我有一个 ArrayList 由点组成。每个点都有一个定义其位置的整数数组。我可以在同一个位置有几个点,然后在每个索引处将它们添加到我的arraylist中。
问题是:
我已经给出了位置,我想检查我的数组列表中是否有任何一点有这个位置。如果是,我就退货。如果有几个点与这个位置,我需要返回最后添加(按时间)。方法equals不起作用。我需要将它与==进行比较,所以我需要正确的引用来引用最新的点。
我该怎么做?
我应该建立另一个独特的点列表,如果在这个列表中是另一个位置相同的点,我应该用新的替换它?

public class Point {
    private final int DIMENSIONS;
    private final int[] position;

    public Point(int dimensions) {
        DIMENSIONS = dimensions;
        position = new int[DIMENSIONS];
    }

    public void setPosition(int dim, int value) {
        position[dim] = value;
    }

    public int getPosition(int dim) {
        return position[dim];
    }
}
6uxekuva

6uxekuva1#

您应该使用另一个或至少一个附加的数据结构。
ArrayList只是一个列表实现,它为您提供了一个动态增长的列表。它不关心插入顺序。
如果你需要的话,你应该找一个linkedhashmap。当然,仅此一点是行不通的:您希望具有相同位置内容的两个点对象实际上是相等的。所以你的Map上只能有一个这样的点。
鉴于目前的情况,可以这样说。要获得更具体的指导,您应该向我们展示 Point 类实现。例如:哪些元素真正进入你的生活 equals() 实施?仅此方面就决定了您应该如何组织数据。
好吧,一句话:如果你在你的列表中添加多个“相等”的点,并且你只是不断地把它们添加到列表的末尾,那么你可以简单地从后面搜索。第一个匹配点也是最后添加的匹配点。
编辑,给定点类实现。基本上,这个类是没有意义的。它要么缺少其他属性,要么缺少合理的equals/hashcode方法。意思:如果一个点真的只是:一个位置列表。。。或者应该不止这些。
但当一个点只包含位置时,那就意味着:两个位置相等的点应该相等。换句话说:像这样的point类肯定应该有值语义。一个点(0,1)应该等于任何其他点(0,1)!

相关问题