Tego znacznika należy używać w przypadku pytań specyficznych dla języka Java 8, który jest wersją 8 (numer wewnętrzny 1.8) platformy Java, wydanej 18 marca 2014 r. W większości przypadków należy również podać znacznik java.
Jak mogę uzyskać ostatni element strumienia lub listy w poniższym kodzie? Gdzie data.careasjest List<CArea>: CArea first = data.careas.stream() .filter(c -> c.bbox.orientationHorizontal).findFirst().get(); CArea last = data.careas.stream() .filter(c -> c.bbox.orientationHorizontal) .collect(Collectors.toList()).; //how to? Jak widać zdobycie pierwszego elementu, z pewnym filter, nie jest trudne. Jednak uzyskanie ostatniego elementu w jednolinijce to prawdziwy …
Bawiłem się nowym API daty i czasu, ale podczas uruchamiania tego: public class Test { public static void main(String[] args){ String dateFormatted = LocalDate.now() .format(DateTimeFormatter .ofPattern("yyyy-MM-dd HH:mm:ss")); System.out.println(dateFormatted); } } Rzuca: Exception in thread "main" java.time.temporal.UnsupportedTemporalTypeException: Unsupported field: HourOfDay at java.time.LocalDate.get0(LocalDate.java:680) at java.time.LocalDate.getLong(LocalDate.java:659) at java.time.format.DateTimePrintContext.getValue(DateTimePrintContext.java:298) at java.time.format.DateTimeFormatterBuilder$NumberPrinterParser.format(DateTimeFormatterBuilder.java:2543) at java.time.format.DateTimeFormatterBuilder$CompositePrinterParser.format(DateTimeFormatterBuilder.java:2182) at …
Czy bezpieczną praktyką jest używanie metod domyślnych jako wersji cech dla ubogich w Javie 8? Niektórzy twierdzą, że pandy mogą być smutne, jeśli używasz ich tylko ze względu na to, że są fajne, ale nie taki jest mój zamiar. Często przypomina się również, że domyślne metody zostały wprowadzone w celu …
Bardzo chcę używać Map.computeIfAbsent, ale minęło zbyt dużo czasu od czasów lambda w undergrad. Niemal bezpośrednio z dokumentacji: zawiera przykład starego sposobu robienia rzeczy: Map<String, Boolean> whoLetDogsOut = new ConcurrentHashMap<>(); String key = "snoop"; if (whoLetDogsOut.get(key) == null) { Boolean isLetOut = tryToLetOut(key); if (isLetOut != null) map.putIfAbsent(key, isLetOut); } …
Modyfikacja zmiennej lokalnej w programie forEachpowoduje błąd kompilacji: Normalna int ordinal = 0; for (Example s : list) { s.setOrdinal(ordinal); ordinal++; } Z Lambda int ordinal = 0; list.forEach(s -> { s.setOrdinal(ordinal); ordinal++; }); Masz jakiś pomysł, jak to rozwiązać?
W naszym projekcie przeprowadzamy migrację do java 8 i testujemy jej nowe funkcje. W moim projekcie używam predykatów i funkcji Guava do filtrowania i przekształcania niektórych kolekcji przy użyciu Collections2.transformi Collections2.filter. Podczas tej migracji muszę zmienić na przykład kod guava na zmiany java 8. A więc zmiany, które wprowadzam, to: …
Zamknięte . To pytanie jest oparte na opinii . Obecnie nie przyjmuje odpowiedzi. Chcesz poprawić to pytanie? Zaktualizuj pytanie, aby można było na nie odpowiedzieć, podając fakty i cytaty, edytując ten post . Zamknięte 6 lat temu . Popraw to pytanie IntelliJ ciągle proponuje mi zastąpienie wyrażeń lambda odwołaniami do …
Ostatnio czytam kod źródłowy Spring Framework. Coś, czego nie rozumiem, jest tutaj: public Member getMember() { // NOTE: no ternary expression to retain JDK <8 compatibility even when using // the JDK 8 compiler (potentially selecting java.lang.reflect.Executable // as common type, with that new base class not available on older …
Widzę java.util.function.BiFunction, więc mogę to zrobić: BiFunction<Integer, Integer, Integer> f = (x, y) -> { return 0; }; A jeśli to nie wystarczy i potrzebuję TriFunction? To nie istnieje! TriFunction<Integer, Integer, Integer, Integer> f = (x, y, z) -> { return 0; }; Chyba powinienem dodać, że wiem, że potrafię …
Mam mały problem z formatowaniem Java 8 LocalDateTime w mojej aplikacji Spring Boot. Z „normalnymi” datami nie mam problemu, ale pola LocalDateTime są konwertowane na następujące: "startDate" : { "year" : 2010, "month" : "JANUARY", "dayOfMonth" : 1, "dayOfWeek" : "FRIDAY", "dayOfYear" : 1, "monthValue" : 1, "hour" : 2, …
Ponieważ Java 8 zawiera potężne wyrażenia lambda, Chciałbym napisać funkcję do konwersji listy / tablicy ciągów na tablicę / listę liczb całkowitych, zmiennoprzecinkowych, podwójnych itp. W normalnej Javie byłoby to tak proste, jak for(String str : strList){ intList.add(Integer.valueOf(str)); } Ale jak osiągnąć to samo z lambdą, biorąc pod uwagę tablicę …
Mam listę z niektórymi obiektami użytkownika i próbuję posortować listę, ale działa tylko przy użyciu odwołania do metody, z wyrażeniem lambda kompilator wyświetla błąd: List<User> userList = Arrays.asList(u1, u2, u3); userList.sort(Comparator.comparing(u -> u.getName())); // works userList.sort(Comparator.comparing(User::getName).reversed()); // works userList.sort(Comparator.comparing(u -> u.getName()).reversed()); // Compiler error Błąd: com\java8\collectionapi\CollectionTest.java:35: error: cannot find symbol …
Ponieważ Java8 została niedawno wydana, a jej zupełnie nowe wyrażenia lambda wyglądają na naprawdę fajne, zastanawiałem się, czy oznacza to upadek klas Anonymous, do których byliśmy tak przyzwyczajeni. Zbadałem trochę na ten temat i znalazłem kilka fajnych przykładów tego, jak wyrażenia lambda będą systematycznie zastępować te klasy, takie jak metoda …
Załóżmy, że mam ogólny interfejs: interface MyComparable<T extends Comparable<T>> { public int compare(T obj1, T obj2); } I metoda sort: public static <T extends Comparable<T>> void sort(List<T> list, MyComparable<T> comp) { // sort the list } Mogę wywołać tę metodę i przekazać jako argument wyrażenie lambda: List<String> list = Arrays.asList("a", …
Przed Java 8, kiedy dzielimy się na pusty ciąg, taki jak String[] tokens = "abc".split(""); mechanizm split rozszczepiłby się w miejscach oznaczonych | |a|b|c| ponieważ pusta przestrzeń ""istnieje przed i po każdym znaku. W rezultacie wygeneruje najpierw tę tablicę ["", "a", "b", "c", ""] a później usunie końcowe puste ciągi …
Używamy plików cookie i innych technologii śledzenia w celu poprawy komfortu przeglądania naszej witryny, aby wyświetlać spersonalizowane treści i ukierunkowane reklamy, analizować ruch w naszej witrynie, i zrozumieć, skąd pochodzą nasi goście.
Kontynuując, wyrażasz zgodę na korzystanie z plików cookie i innych technologii śledzenia oraz potwierdzasz, że masz co najmniej 16 lat lub zgodę rodzica lub opiekuna.