Pagina 2 di 2 primaprima 1 2
Visualizzazione dei risultati da 11 a 14 su 14
  1. #11
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,254
    Quote Originariamente inviata da fermat Visualizza il messaggio
    apperentemente funziona.
    non so se ci sono modi migliori!
    Non è particolarmente "bello" usare l'effetto collaterale del forEach per fare un add su un'alta lista esterna.

    Quel distinctByKey che hai mostrato all'inizio, perché dici che non va bene? Sostanzialmente è un filtro "stateful" (con dello stato che viene mantenuto). E mi pare che l'hai preso da internet, forse da stackoverflow, perché mi pare di aver già visto una cosa di quel tipo.

    Appena ho tempo, lo verifico.

    P.S. tra l'altro ora che rileggo meglio quel tuo codice iniziale, nella parte:
    list.stream().filter(distinctByKey(n -> n.getGruppo())).collect(Collectors.toList());

    NON stavi usando la lista generata dal toList() !! Il for che facevi sul list ... era la lista originale, quindi ovvio che non "vedevi" risultati utili.
    Ultima modifica di andbin; 09-05-2018 a 16:09
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    Java Versions Cheat Sheet

  2. #12
    in effetti, riprendendo il primo post:
    codice:
        private void setTblGruppi() {
            db.createDb();
    
            List<Nota> list = new ArrayList<>(db.getGruppi().toList());
            List<Nota> nl = list.stream().filter(distinctByKey(n -> n.getGruppo())).collect(Collectors.toList());
    
    ObservableList<Nota> obl = FXCollections.observableArrayList(nl);
            tblGruppi.getColumns().setAll(TableColumns.setCols(new String[]{"GRUPPO"}));
            tblGruppi.setItems(obl);
        }
    
        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;
        }

    creando una nuva list e assegnandola in quel modo, funziona!
    intendevi questo??

  3. #13
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,254
    Quote Originariamente inviata da fermat Visualizza il messaggio
    creando una nuva list e assegnandola in quel modo, funziona!
    intendevi questo??
    Sì, proprio il fatto di usare la lista che il collect fornisce (perché è la terminal operation). Perché altrimenti sarebbe inutile.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    Java Versions Cheat Sheet

  4. #14
    Quote Originariamente inviata da andbin Visualizza il messaggio
    Sì, proprio il fatto di usare la lista che il collect fornisce (perché è la terminal operation). Perché altrimenti sarebbe inutile.
    perfetto, grazie!!

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.