TOTOROCATBUS :
Tengo una aplicación Java Set
que doy información a:
Set<myData> dataLocations = getData(location);
Me gustaría resolver esto Conjunto He probado un SortedSet y no podía conseguir que funcione, por lo que he intentado esto
dataLocations = dataLocations.stream().sorted(Comparator.comparing(myData -> myData.expDtTm)).collect(Collectors.toSet());
El único problema es que en la documentación de Java no garantiza retener cualquier pedido. Así que he intentado esto:
TreeSet<myData> sortedDataLocations = dataLocations.stream().sorted(Comparator.comparing(myData -> myData.expDtTm)).collect(Collectors.toCollection(TreeSet<myData>));
no hace falta decir que no funcionaba por lo que cualquiera que tenga alguna otra idea que sería muy apreciada.
Charles Dowbecki:
Puede utilizar TreeSet
y proporcionar un comparador
TreeSet<myData> sorted = new TreeSet<>(Comparator.comparing(MyData::expDtTm));
sorted.addAll(dataLocations);
O como se describe en Collector
la clase Javadocs crean su propio colector para TreeSet
:
Collector<Widget, ?, TreeSet<Widget>> intoSet =
Collector.of(
TreeSet::new,
TreeSet::add,
(left, right) -> { left.addAll(right); return left; }
);