Pytania otagowane jako java-8

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.

5
Kiedy należy używać strumieni?
Właśnie natknąłem się na pytanie, kiedy używam a Listi jego stream()metody. Chociaż wiem, jak ich używać, nie jestem pewien, kiedy ich używać. Na przykład mam listę zawierającą różne ścieżki do różnych lokalizacji. Teraz chciałbym sprawdzić, czy pojedyncza podana ścieżka zawiera którąkolwiek ze ścieżek określonych na liście. Chciałbym zwrócićboolean podstawie tego, …


5
Prawidłowe użycie Optional.ifPresent ()
Próbuję zrozumieć ifPresent()metodę OptionalAPI w Javie 8. Mam prostą logikę: Optional<User> user=... user.ifPresent(doSomethingWithUser(user.get())); Ale to powoduje błąd kompilacji: ifPresent(java.util.functionError:(186, 74) java: 'void' type not allowed here) Oczywiście mogę zrobić coś takiego: if(user.isPresent()) { doSomethingWithUser(user.get()); } Ale to jest dokładnie jak zagracony nullczek. Jeśli zmienię kod na ten: user.ifPresent(new Consumer<User>() { …
99 java  lambda  java-8  optional 

8
Jaki jest cel domyślnego słowa kluczowego w Javie?
Interfejs w Javie jest podobny do klasy, ale treść interfejsu może zawierać tylko abstrakcyjne metody i finalpola (stałe). Niedawno zobaczyłem pytanie, które wygląda tak interface AnInterface { public default void myMethod() { System.out.println("D"); } } Zgodnie z definicją interfejsu dozwolone są tylko metody abstrakcyjne . Dlaczego pozwala mi skompilować powyższy …

5
Dlaczego Collections.sort używa Mergesort, a Arrays.sort nie?
Używam JDK-8 (x64). W przypadku Arrays.sort(prymitywów) w dokumentacji Java znalazłem: Algorytm sortowania to Dual-Pivot Quicksort autorstwa Vladimira Yaroslavskiya, Jona Bentleya i Joshua Blocha. " Dla Collections.sort(obiektów) znalazłem to „Timsort”: Ta implementacja jest stabilnym, adaptacyjnym, iteracyjnym łączeniem ... Ta implementacja zrzuca określoną listę do tablicy, sortuje tablicę i wykonuje iterację po …

6
Przekształć przyszłość Javy w kompletną przyszłość
Java 8 wprowadza CompletableFuturenową implementację Future, którą można komponować (zawiera kilka metod thenXxx). Chciałbym używać tego wyłącznie, ale wiele bibliotek, których chcę użyć, zwraca tylko Futureinstancje, których nie można komponować . Czy istnieje sposób na zawarcie zwróconych Futurewystąpień wewnątrz elementu CompleteableFuture, aby móc go skomponować?
97 java  java-8  future 


6
Dlaczego w Javie 8 domyślna pojemność ArrayList wynosi teraz zero?
Jak pamiętam, przed Java 8 domyślna pojemność ArrayListwynosiła 10. Co zaskakujące, komentarz dotyczący domyślnego (void) konstruktora nadal mówi: Constructs an empty list with an initial capacity of ten. Od ArrayList.java: /** * Shared empty array instance used for default sized empty instances. We * distinguish this from EMPTY_ELEMENTDATA to know …
94 java  arraylist  java-8 

4
Kiedy inicjowany jest interfejs z metodą domyślną?
Podczas przeszukiwania specyfikacji języka Java, aby odpowiedzieć na to pytanie , dowiedziałem się tego Zanim klasa zostanie zainicjowana, jej bezpośrednia nadklasa musi zostać zainicjowana, ale interfejsy implementowane przez klasę nie są inicjowane. Podobnie, superinterfejsy interfejsu nie są inicjowane przed zainicjowaniem interfejsu. Z własnej ciekawości spróbowałem i zgodnie z oczekiwaniami interfejs …

5
Dlaczego nie mogę zamapować liczb całkowitych na ciągi podczas przesyłania strumieniowego z tablicy?
Ten kod działa (pobrany w Javadoc): List<Integer> numbers = Arrays.asList(1, 2, 3, 4); String commaSeparatedNumbers = numbers.stream() .map(i -> i.toString()) .collect(Collectors.joining(", ")); Tego nie można skompilować: int[] numbers = {1, 2, 3, 4}; String commaSeparatedNumbers = Arrays.stream(numbers) .map((Integer i) -> i.toString()) .collect(Collectors.joining(", ")); IDEA mówi mi, że mam „niezgodny ciąg …

3
_ (podkreślenie) jest zastrzeżonym słowem kluczowym
Właśnie zastąpiłem sw poniższym wyrażeniu lambda przez _: s -> Integer.parseInt(s) Kompilator Eclipse mówi: „_” nie powinno być używane jako identyfikator, ponieważ jest to zastrzeżone słowo kluczowe od poziomu źródła od 1.8. Nie znalazłem żadnego wyjaśnienia w JLS §3.9 Struktura leksykalna / Słowa kluczowe.
94 java  lambda  java-8 

6
Implementacja HashMap Java 8
Zgodnie z następującym dokumentem odsyłającym: Implementacja Java HashMap Jestem zdezorientowany z implementacją HashMap(a raczej ulepszeniem HashMap). Moje zapytania to: po pierwsze static final int TREEIFY_THRESHOLD = 8; static final int UNTREEIFY_THRESHOLD = 6; static final int MIN_TREEIFY_CAPACITY = 64; Dlaczego i jak są używane te stałe? Chcę mieć na to …


6
Używanie strumieni do zbierania do TreeSet z niestandardowym komparatorem
Pracując w Javie 8 mam takie TreeSetzdefiniowane: private TreeSet<PositionReport> positionReports = new TreeSet<>(Comparator.comparingLong(PositionReport::getTimestamp)); PositionReport jest raczej prostą klasą zdefiniowaną w ten sposób: public static final class PositionReport implements Cloneable { private final long timestamp; private final Position position; public static PositionReport create(long timestamp, Position position) { return new PositionReport(timestamp, position); …

3
Jaka jest „domyślna” implementacja metody zdefiniowanej w interfejsie?
W interfejsie kolekcji znalazłem metodę o nazwie, removeIf()która zawiera jej implementację. default boolean removeIf(Predicate<? super E> filter) { Objects.requireNonNull(filter); boolean removed = false; final Iterator<E> each = iterator(); while (each.hasNext()) { if (filter.test(each.next())) { each.remove(); removed = true; } } return removed; } Chcę wiedzieć, czy istnieje sposób zdefiniowania treści …
91 java  interface  java-8 

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.