gpt4 book ai didi

java - 将唯一的对象实例添加到 ArrayList 中

转载 作者:行者123 更新时间:2023-11-30 04:52:59 25 4
gpt4 key购买 nike

我遇到了非常基本的面向对象理解问题,非常感谢任何帮助。

每次按下按钮时,我都试图将“Thing”的实例添加到数组列表中,但我无法理解如何创建唯一的实例以添加到列表中。按不同的按钮应从列表中删除最新的对象。

ArrayList myList = new ArrayList<Thing>();
if(input.isKeyPressed(Input.KEY_A)){
Thing myThing = new Thing();
myThing.setNumber(myList.size());
myList.add(myThing);
}

if(input.isKeyPressed(Input.KEY_R)){
if(myList.size()>0){
myList.remove(myList.size()-1);
}
}

如果我打算制作很多“东西”并且我不关心它们的名称(我也不想跟踪唯一的东西对象名称)。如何在每次按下按钮时以最小的痛苦创建一个独特的“事物”对象。

更新:感谢您的评论,请让我尝试更好地表达我的问题......当我创建一个充满“Thing”的 ArrayList 时,每个实例都称为“myThing”,每个实例都具有相同的实例变量值。

如果我希望某些“事物”具有 boolean isVisable = true,而其他“事物”具有 boolean isVisable = false。我陷入困境,因为列表中的每个元素都具有相同的名称。

最佳答案

确保 Thing 正确实现 equals 和 hashCode,然后将实例存储在 Set 集合(即 HashSet)中。通过 hashCode() 和 equals() 的实现,哪两个 Thing 实例相同将完全取决于您,因此您将能够以任何您需要的方式强制执行唯一性。

这里的技巧是,实现 hashCode() 和 equals() 并不完全是微不足道的,但如果您打算使用 Java,则需要知道如何做到这一点。所以请阅读appropriate chapter 《Effective JAva》(或者最好阅读整本书)。

关于java - 将唯一的对象实例添加到 ArrayList 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9457113/

25 4 0