Czy jest możliwe uzyskanie subSet filtrowania kolekcji przez jakiś komparator i czy każda aktualizacja w kolekcji nadrzędnej i jej podzestawach powoduje wszystkie zmiany?Uzyskaj zestaw subset zestawu za pomocą kompilatora
Odpowiedz
Połączenie NavigableSet.subSet()
może zrobić, co chcesz. NavigableSet
to posortowany zestaw, który ma możliwość tworzenia podzbiorów, które są "widokami" zestawu podstawowego. Widoki te są ograniczone wartościami, które podajesz, korzystając z Comparator
dostarczonego podczas tworzenia zestawu lub z naturalnej kolejności wartości. Najczęstszą implementacją jest TreeSet
. Na przykład, można to zrobić:
NavigableSet<String> set = new TreeSet<>(
Arrays.asList("b", "e", "a", "d", "c"));
System.out.println(set);
Rezultatem jest [a, b, c, d, e]
jak można się spodziewać. Teraz można tworzyć podzbiór, na przykład od „b” do „D” włącznie:
NavigableSet<String> set2 = set.subSet("b", true, "d", true);
System.out.println(set2);
Tutaj wyjście jest [b, c, d]
. Teraz, jeśli dodać kilka elementów do oryginalnego zestawu, które są zarówno wewnątrz jak i poza granicami, widok podzbiór zmiany obejmują jedynie to, co zostało dodane do środka:
set.add("a1");
set.add("c1");
set.add("e1");
System.out.println(set2);
Wyjście jest [b, c, c1, d]
.
Ok, a ja chcę utworzyć subSet nie z dostarczaniem od "b" do "d", ale przez jakiś komparator, tj. SubSet, który wybiera dla mnie co sekundę. Zakładam, że wybór nie ciągłego jest trudny, więc nie ma takiego generycznego contairnera. Ale jeśli TreeSet ma np. Komparator, który dzieli elementy na, np. Nieparzyste i parzyste. Chcę subSet pierwszej części lub sekundy przy użyciu tego komparatora. – userbb
@userbb OK, nie sądzę, że kompilator TreeSet może zrobić to, co chcesz. Komparator ustanawia * całkowite zamówienie * wszystkich elementów w zestawie i jest to ustalona właściwość zestawu ustalona w czasie tworzenia. Nie można na przykład ustawić go w ramach operacji zapytania. Wygląda na to, że potrzebujesz czegoś bardziej przypominającego filtr z predykatem, ale myślę, że musisz dokładniej wyjaśnić swój przypadek użycia. Ja i inni robimy sporo zgadywania. –
- 1. Inicjowanie zestawu za pomocą Iterable
- 2. Uzyskaj nazwę kompilatora bluetooth
- 3. Negowanie zestawu słów za pomocą regex java
- 4. dołączyć zestaw do innego zestawu
- 5. Jak wyświetlić zestaw za kodem za pomocą programu Visual C++?
- 6. Ostrzeżenia kompilatora za pomocą klienta AFHTTP
- 7. Przenoszenie kompilatora z zestawu x86 do LLVM
- 8. Szablon T4 VS2010 Uzyskaj zestaw hosta
- 9. Python: Uzyskaj dostęp do elementów zestawu
- 10. Zapisz "zmienne zestawu niestandardowego" za pomocą elisp
- 11. uzyskiwanie "indeksu" elementu zestawu za pomocą iteratora
- 12. Określanie "aktywnego" zestawu zmian za pomocą Mercurial?
- 13. Odwołanie do bieżącego zestawu za pomocą CompilerParameters
- 14. Tworzenie zestawu za pomocą interfejsu API Soundcloud
- 15. Próbuję przekazać zestaw kwerendy jako dane początkowe do zestawu
- 16. Zestaw zasilania i kartezjański produkt zestawu python
- 17. Uzyskaj wartość z zestawu rozwiązań zwróconego jako skończony zestaw przez Sympy
- 18. Uzyskaj nazwę metody za pomocą wyrażeń Lambda
- 19. Uzyskaj token za pomocą Github API
- 20. Uzyskaj maksymalną rozdzielczość wideo za pomocą getUserMedia
- 21. Uzyskaj odpowiedź serwera za pomocą metody WebClient.UploadFileAsync
- 22. Uzyskaj status ekranu za pomocą ADB
- 23. Uzyskaj wskaźnik do wartości za pomocą refleksji
- 24. Uzyskaj dane serwera Sql za pomocą smo
- 25. Uzyskaj wartość zwracaną za pomocą podprocesu
- 26. Uzyskaj adres IP za pomocą skryptu akcji?
- 27. Uzyskaj natywną rozdzielczość ekranu za pomocą jQuery
- 28. Uzyskaj pliki definicji maszynopisu za pomocą altanki?
- 29. Uzyskaj nazwę wersji aplikacji za pomocą adb
- 30. Uzyskaj kierunek geograficzny za pomocą pola magnetycznego
Czy chcesz dodać rodzaj "wyzwalacza" do swojej kolekcji, która filtruje elementy dodawane do Twojej listy? –
Nie sądzę, że można to zrobić w przypadku zwykłej kolekcji, ponieważ klasa musiałaby implementować jakiś obserwowalny interfejs. Albo to, albo musisz przetestować cały element za każdym razem, na wypadek gdyby coś zmieniło się w oryginalnej kolekcji. –
Czy 'NavigableSet.subSet()' robi to, co chcesz? –