gpt4 book ai didi

java - 从 ArrayList 添加/删除值以获得唯一值

转载 作者:行者123 更新时间:2023-11-30 02:18:03 26 4
gpt4 key购买 nike

我正在开发一个应用程序,它使用 ArrayList 来填充 ListView。我为我的 ListView 使用自定义类。我想为我的 Listview 添加/删除 ArrayList。我对这个应用程序的目标是控制列表项元素,如果它存在于 ArrayList删除或如果 ArrayList 中不存在,则添加列表项。

为了解释我的情况,我在下面粘贴了我的代码;

这是我的自定义类;

public class NDListItem {
String textdata;
public NDListItem(String textdata) {
this.textdata = textdata;
}
}

这是我使用我的类(class)的方法。名称参数来自另一个 Activity 。它来得恰到好处。我使用 for 循环来解决这个问题,但无法得到我想做的事情。我阅读了一些文档并找到了另一个解决方案。对我的类使用 equals 和 hash-code 方法可能会完成我的工作,但我不知道如何使用。

编辑: 在第二个代码块中添加一些解释和 myItems 解释。

public void addLayersection(String name) {

//MyList already defined on the scope..
//MyList looks like this
// ArrayList<NDListItem> myItems = new ArrayList<>();

NDListItem listItem = new NDListItem(name);
if (myItems.size() == 0) {
myItems.add(listItem);
} else {
if(myItems.contains(listItem))
{
myItems.add(listItem);
}
else
{
myItems.remove(listItem);

}

}

myAdapter.notifyDataSetChanged();
}

编辑2

我为 equals 方法更新了我的类。它工作得很好,但只对我添加到 ArrayList 的第一个项目起作用。我想为每一项工作

public class NDListItem {
String textdata;

public NDListItem(String textdata) {
this.textdata = textdata;
}

public boolean equals(Object o) {
if (o == null) return false;
//if(!(o instanceof) NDListItem) return false;
if (!(o instanceof NDListItem)) return false;

NDListItem other = (NDListItem) o;
if (!this.textdata.equals(other.textdata))

return false;
else


return true;
}
}

最佳答案

好的,根据您提供的详细信息,

因为在您的自定义类 NDListItem 中没有可用的 .equals() 覆盖方法

您的列表将根据引用比较对象,因此只需覆盖自定义 NDListItem 类中的 .equals() 方法

喜欢,(伪代码仅供理解)

@Override
public boolean equals(Object obj) {
NDListItem ndListItemObject = (NDListItem) obj;
return this.textdata.equalIgnoreCase(ndListItemObject.textdata);
}

现在,.contains() 方法将根据您的需要对自定义对象列表起作用。

因为,您的对象比较是在 textdata 属性上进行的。

关于java - 从 ArrayList 添加/删除值以获得唯一值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28974227/

26 4 0