java - 从android中的数组列表中删除重复项

标签 java list android-studio sorting arraylist

我有一个简单的 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 已实现 equalshashCode

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/

相关文章:

Python 类列表

java - Android Studio - 编译错误 : (App keeps stopping) -> RuntimeException: Unable to instantiate activity

java - 保存实例状态

java - 向某个pc应用的所有android客户端发送消息

java - 为什么允许 "new ArrayList<E>"?

python - 将列表分成不同名称的列表

python - 接受一个列表并返回两个列表的递归函数

java - android studio 上的错误 :Plugin with id 'kotlin-android' not found.

android - 无法在 Android Studio 中将行间距设置为 '1'(不再?)

java - 按 "?/"分割不起作用