簡體   English   中英

哪個元素已添加到ArrayList中?

[英]Which element has been added to the ArrayList as last?

例如:我有一個由Points組成的ArrayList 每個點都有一組int來定義他的位置。 我可以在同一個位置上有幾個點,並在我想要的每個索引處將它們添加到我的ArrayList中。

問題是:

我已經給出了位置,我想檢查我的ArrayList中是否有任何一個位置。 如果是,我會退貨。 如果這個位置的點數很少,我需要返回最后添加的(按時間)。 方法等於不起作用。 我需要將它與==進行比較,所以我需要正確引用最新點。

我應該怎么做?

我應該建立另一個獨特點列表,如果在這個列表中是另一個具有相同位置的點我應該用更新的替換它?

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];
    }
}

您應該使用另一個或至少一個額外的數據結構。

ArrayLists只是一個List實現,它為您提供了一個動態增長的列表。 它不關心插入順序。

如果您需要,您應該查看LinkedHashMap。 當然,僅此一點不起作用:您希望具有相同位置內容的兩個Point對象實際上是相等的 所以你的Map中只能有一個這樣的點。

鑒於目前的信息,這就是可以說的。 有關更具體的指導,您應該向我們展示Point類實現的相關部分。 例如:哪些元素真正進入你的equals()實現? 僅此方面就可以推動您應該如何組織數據。

好吧,有一句話:如果您在列表中添加多個“相等”點,並且只是它們附加到列表末尾,那么您只需從后端搜索即可。 第一個匹配點也是最后添加的點。

在Point類實現的情況下編輯。 基本上,那個班級毫無意義。 要么缺少其他屬性, 要么缺少合理的equals / hashCode方法。 含義:一個點是否真的只是:位置的列表......或者應該不止於此。

但是當Point只包含位置時,則意味着:具有相同位置的兩個點應相等。 換句話說:像這樣的Point類肯定應該具有值語義 點(0,1)應該等於任何其他點(0,1)!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM