左:
すべて、
私は、オブジェクトを持っています
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()
過負荷を。