Почему это не удаляет дубликаты из моего списка на Java? - PullRequest
0 голосов
/ 01 ноября 2019

Зачем следовать коду, возвращающему те же значения. Я хочу удалить дубликаты из списка ...

List<userDto> list=uC.getIds(dto);
userDto dto1=new userDto();

List<userDto> user = new ArrayList<>(); 

if(list.size()>0){
    for (int i = 0; i < list.size(); i++) {     
        dto1=uC.getM(list.get(i));
        if(!dto1.userId.equals(userId)){
            user.add(dto1);
        }
    }
}

Здесь я создал новый список и проверил наличие дубликатов. Я делаю это неправильно .. пожалуйста, помогите.

   List<userDto> list=uC.getIds(dto);
        userDto dto1=new userDto();

        List<userDto> newList = new ArrayList<>();
            for (userDto d : list) { 
                if (!newList.contains(d)) { 
                    newList.add(d); 
                } 
            }
        List<userDto> user = new ArrayList<>(); 

        if(newList.size()>0){
            for (int i = 0; i < newList.size(); i++) {      
                dto1=uC.getM(newList.get(i));
                if(!dto1.userId.equals(userId)){
                    user.add(dto1);
                }
            }
        }

PS: я новичок в JAVA.

1 Ответ

0 голосов
/ 01 ноября 2019

Сначала убедитесь, что ваши функции equals и hashCode правильные. Все, что равно true, должно иметь тот же хеш-код.

Тогда вы можете использовать набор, чтобы естественным образом удалять дубликаты и собирать их обратно в список.

list = new HashSet<>(list).stream().collect(Collectors.toList());
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...