теперь есть еще одна проблема: я получаю дублирующиеся данные, и поэтому, чтобы исправить это, я решил создать хэш-набор и сохранить в нем свои объекты, но я все еще получаю дублирующиеся данные в хэш-наборе
Вы получаете дубликаты данных, потому что вы добавляете в свой Set
различные объекты типа Model
. Каждый Model
объект в вашем наборе имеет различный адрес в памяти, и поэтому каждый объект в вашем наборе отличается. Set
- это интерфейс, который расширяет коллекцию, поэтому при использовании такой коллекции вы не можете знать, содержит ли поле в объекте то же значение, что и другое поле в другом объекте, если вы не укажете его.
Существует большая разница между Set
и List
. Если вы используете:
List<String> list = new ArrayList<>();
list.add("user2426691");
list.add("user2426691");
list.add("user2426691");
Log.d(TAG, list.toString());
Вы увидите, что в вашем списке будет три повторяющихся имени. Однако, если бы вы использовали Set
строк, как в следующих строках кода:
Set<String> set = new HashSet<>(list);
Log.d(TAG, set.toString());
Вы бы заметили, что ваш Set
будет содержать только один элемент (без дубликатов).
Чтобы решить вашу проблему, вы можете использовать List
или Set
, но вам нужно заполнить нужную коллекцию объектов на основе условия, которое может быть:
if(!model.getName().equals("someName")) {
list.add(model);
}