Remover objetos duplicados em ArrayList

esquerda:

Todos,

Eu tenho um objeto

public class Device {

     public String getUserId() {
        return userId;
    }
    public String getDeviceId() {
        return deviceId;
    }

}

Recebo toda a Lista de Valores

     List<Device> uList = getList();

Na lista eu tenho um valores duplicados Baseado userId Agora eu quero obter a lista única que irá remover as duplicatas de userId

Como eu posso conseguir isso, eu sou muito novo para Java

shmosel:

A maneira mais simples é criar um Maponde a chave é o userId:

Map<String, Device> map = new HashMap<>();
devices.forEach(d -> map.put(d.getUserId(), d));
List<Device> uniques = new ArrayList<>(map.values());

Ou, usando correntes:

Map<String, Device> map = devices.stream()
        .collect(Collectors.toMap(Device::getUserId, d -> d, (a, b) -> a));
List<Device> uniques = new ArrayList<>(map.values());

Alternativamente, você pode despejá-los em um TreeSetcom um comparador que verifica userId:

Set<Device> set = new TreeSet<>(Comparator.comparing(Device::getUserId));
set.addAll(devices);
List<Device> uniques = new ArrayList<>(set);

Tudo isso pressupõe que você não está preocupado com discrepâncias nos deviceId. Caso contrário, dê uma olhada Map.merge()ou o correspondente Collectors.toMap()sobrecarga.

Acho que você gosta

Origin http://43.154.161.224:23101/article/api/json?id=315435&siteId=1
Recomendado
Clasificación