我有一个简单的 arrayList,已填充到 ListView 中,我想知道是否可以从填充的 arrayList 中删除重复项
tetClassArrayList2 = new ArrayList<>();
tetClassArrayList2.add((new tetClass("Action")));
tetClassArrayList2.add((new tetClass("Adventure")));
tetClassArrayList2.add((new tetClass("Animation")));
tetClassArrayList2.add((new tetClass("Biography")));
tetClassArrayList2.add((new tetClass("Action")));
tetClassArrayList2.add((new tetClass("Comedy")));
tetClassArrayList2.add((new tetClass("Action")));
tetClassArrayList2.add((new tetClass("Animation")));
tetClassArrayList2.add((new tetClass("Crime")));
tetClassArrayList2.add((new tetClass("Animation")));
tetClassArrayList2.add((new tetClass("Biography")));
tetClassArrayList2.add((new tetClass("Action")));
tetAdapter = new tetAdapter(UploadTet.this, tetClassArrayList2);
listView2.setAdapter(tetAdapter);
代码工作正常,但我希望用单击按钮时删除的重复项重新填充 ListView ,以便 arrayList 可以像这样填充在 ListView 中
tetClassArrayList2.add((new tetClass("Action")));
tetClassArrayList2.add((new tetClass("Adventure")));
tetClassArrayList2.add((new tetClass("Animation")));
tetClassArrayList2.add((new tetClass("Biography")));
tetClassArrayList2.add((new tetClass("Comedy")));
tetClassArrayList2.add((new tetClass("Crime")));
最佳答案
首先,您需要确保 TestClass
已实现 equals
和 hashCode
。
public class TestClass {
private String name;
public TestClass(String name) {
this.name = name;
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
TestClass testClass = (TestClass) o;
return Objects.equals(name, testClass.name);
}
@Override
public int hashCode() {
return Objects.hash(name);
}
//other getters & setters
}
现在,您可以使用与 stream
API 不同的 distinct
。
List<TestClass> list = list.stream()
.distinct()
.collect(Collectors.toList());
或者你可以这样做
List<TestClass> list = new ArrayList<>(new HashSet<>(list));
示例:
public static void main(String[] args) {
List<TestClass> list = new ArrayList<>();
list.add((new TestClass("Action")));
list.add((new TestClass("Adventure")));
list.add((new TestClass("Action")));
list = list.stream()
.distinct()
.collect(Collectors.toList());
}
关于java - 从android中的数组列表中删除重复项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62009055/