Чтобы удалить дубликат из arrayylist в andriod - PullRequest
0 голосов
/ 25 мая 2020

У меня есть простой arrayList, который был заполнен в списке, я хотел бы знать, можно ли удалить дубликат из заполненного 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);

Код работает нормально, но я хочу, чтобы список был повторно заполняется с дублированием, удаленным при нажатии кнопки, поэтому 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("Comedy")));
        tetClassArrayList2.add((new tetClass("Crime")));

1 Ответ

0 голосов
/ 25 мая 2020

Во-первых, вам нужно убедиться, что 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
}

Теперь вы можете использовать distinct из stream API.

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());

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...