ciao!
io ho una lista di questi oggetti:
codice:
import org.dizitart.no2.IndexType;
import org.dizitart.no2.objects.Id;
import org.dizitart.no2.objects.Index;
import org.dizitart.no2.objects.Indices;
import java.io.Serializable;
import java.util.Date;
@Indices(value = {
@Index(value = "gruppo", type = IndexType.NonUnique),
@Index(value = "titolo", type = IndexType.Unique)
})
public class Nota implements Serializable {
@Id
private long notaId;
private String gruppo;
private String titolo;
private String testo;
private Date data;
public long getNotaId() {
return notaId;
}
public void setNotaId(long notaId) {
this.notaId = notaId;
}
public String getTitolo() {
return titolo;
}
public void setTitolo(String titolo) {
this.titolo = titolo;
}
public String getTesto() {
return testo;
}
public void setTesto(String testo) {
this.testo = testo;
}
public Date getData() {
return data;
}
public void setData(Date data) {
this.data = data;
}
public String getGruppo() {
return gruppo;
}
public void setGruppo(String gruppo) {
this.gruppo = gruppo;
}
}
la lista può avere lo stesso gruppo ripetuto più volte.
io avrei la necessità di iterare su questa lista prendendo i valori univoci di gruppo.
ho fatto un pò di tentativi, di cui questo è l'ultimo:
codice:
@FXML
public void initialize() {
List<Nota> list = new ArrayList<>(db.getGruppi().toList());
list.stream().filter(distinctByKey(n -> n.getGruppo())).collect(Collectors.toList());
for (Nota n : list) {
System.out.println(n.getGruppo());
}
}
public static <T> Predicate<T> distinctByKey(Function<? super T, Object> keyExtractor) {
Map<Object, Boolean> map = new ConcurrentHashMap<>();
return t -> map.putIfAbsent(keyExtractor.apply(t), Boolean.TRUE) == null;
}
ma compaiono i valori doppi.
come dovrei fare??