ArrayListの中で重複オブジェクトを削除します

左:

すべて、

私は、オブジェクトを持っています

public class Device {

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

}

私はすべての値のリストを取得します

     List<Device> uList = getList();

一覧では、私は、に基づいて、重複する値持ちのuserId、私はの重複削除されますユニークなリストを取得したい今のuserIdを

どのように私はそれをacheiveすることができ、私は非常に新しいJavaへの思い

shmosel:

最も簡単な方法は、作成することでMap、キーがどこにありますかuserId

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

または、ストリームを使用して:

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

また、あなたはそれらをダンプすることができますTreeSetことを確認コンパレータとuserId

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

このすべては、あなたが矛盾を懸念していないと仮定しdeviceIdそうでなければ、見とるMap.merge()か、対応するCollectors.toMap()過負荷を。

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=315436&siteId=1