Запитання з тегом «java-8»

Використовуйте цей тег для питань, специфічних для Java 8, це версія 8 (внутрішній номер 1.8) платформи Java, випущена 18 березня 2014 року. У більшості випадків слід також вказати тег Java.

5
Чому Collections.sort використовує Mergesort, а Arrays.sort - ні?
Я використовую JDK-8 (x64). Для Arrays.sort(примітивів) я знайшов таке в документації Java: Алгоритм сортування є Dual-Pivot Quicksort Володимира Ярославського, Джон Бентлі, і Джошуа Bloch.` Для Collections.sort(об'єктів) я знайшов цей "Timsort": Ця реалізація є стабільним, адаптивним, ітеративним злиттям ... Ця реалізація скидає вказаний список у масив, сортує масив та перебирає список, …

15
Потік Java 8 з пакетною обробкою
У мене є великий файл, який містить список елементів. Я хотів би створити партію елементів, зробити HTTP-запит з цією партією (усі елементи потрібні як параметри в HTTP-запиті). Я можу це зробити дуже легко за допомогою forциклу, але як любитель Java 8, я хочу спробувати написати це за допомогою фреймворку Stream …

6
Як перевірити, чи потік Java 8 порожній?
Як я можу перевірити, чи Streamпорожнє a , і видати виняток, якщо ні, як нетермінальну операцію? В основному, я шукаю щось еквівалентне коду нижче, але без матеріалізації потоку між ними. Зокрема, перевірка не повинна відбуватися до того, як потік фактично спожитий операцією терміналу. public Stream<Thing> getFilteredThings() { Stream<Thing> stream = …

6
Перетворіть Java Future в CompletableFuture
Java 8 представляє CompletableFutureнову реалізацію Future, яку можна скласти (включає купу методів thenXxx). Я хотів би використовувати це виключно, але багато бібліотек, які я хочу використовувати, повертають лише некомпоновані Futureекземпляри. Чи є спосіб обернути повернуті Futureекземпляри всередині, CompleteableFutureщоб я міг їх скласти?
95 java  java-8  future 

4
Коли ініціалізується інтерфейс із методом за замовчуванням?
Під час пошуку специфікації мови Java, щоб відповісти на це запитання , я дізнався це Перед ініціалізацією класу його прямий надклас повинен бути ініціалізований, але інтерфейси, реалізовані класом, не ініціалізовані. Аналогічно, суперінтерфейси інтерфейсу не ініціалізуються до ініціалізації інтерфейсу. З власної цікавості я спробував це, і, як очікувалося, інтерфейс InterfaceTypeне був …


5
Правильне використання Optional.ifPresent ()
Я намагаюся зрозуміти ifPresent()метод OptionalAPI у Java 8. У мене проста логіка: Optional<User> user=... user.ifPresent(doSomethingWithUser(user.get())); Але це призводить до помилки компіляції: ifPresent(java.util.functionError:(186, 74) java: 'void' type not allowed here) Звичайно, я можу зробити щось подібне: if(user.isPresent()) { doSomethingWithUser(user.get()); } Але це точно як захаращений nullчек. Якщо я зміню код на …
94 java  lambda  java-8  optional 

3
_ (підкреслення) - зарезервоване ключове слово
Я щойно замінив sнаступний лямбда-вираз на _: s -> Integer.parseInt(s) Компілятор Eclipse каже: '_' не слід використовувати як ідентифікатор, оскільки це зарезервоване ключове слово з рівня джерела 1.8. Я не знайшов жодного пояснення в § 3.9 Лексичної структури / ключових слів JLS .
94 java  lambda  java-8 

8
Яка мета ключового слова за замовчуванням у Java?
Інтерфейс у Java схожий на клас, але тіло інтерфейсу може включати лише абстрактні методи та finalполя (константи). Нещодавно я побачив запитання, яке виглядає так interface AnInterface { public default void myMethod() { System.out.println("D"); } } Згідно з визначенням інтерфейсу, дозволяються лише абстрактні методи . Чому це дозволяє мені компілювати вищевказаний …

6
Чому в Java 8 зараз нульова ємність ArrayList дорівнює нулю?
Наскільки я пам'ятаю, до Java 8 ємність за замовчуванням ArrayListстановила 10. Дивно, але коментар до конструктора за замовчуванням (недійсний) все ще говорить: Constructs an empty list with an initial capacity of ten. Від ArrayList.java: /** * Shared empty array instance used for default sized empty instances. We * distinguish this …
93 java  arraylist  java-8 


1
завершене майбутнє приєднання проти get
У чому різниця між CompletableFuture.get()і CompletableFuture.join()? Нижче мій код: List<String> process() { List<String> messages = Arrays.asList("Msg1", "Msg2", "Msg3", "Msg4", "Msg5", "Msg6", "Msg7", "Msg8", "Msg9", "Msg10", "Msg11", "Msg12"); MessageService messageService = new MessageService(); ExecutorService executor = Executors.newFixedThreadPool(4); List<String> mapResult = new ArrayList<>(); CompletableFuture<?>[] fanoutRequestList = new CompletableFuture[messages.size()]; int count = 0; …

6
Реалізація HashMap Java 8
Відповідно до наступного документа з посиланнями: Впровадження Java HashMap Мене плутає реалізація HashMap(вірніше, вдосконалення в HashMap). Мої запити: По-перше static final int TREEIFY_THRESHOLD = 8; static final int UNTREEIFY_THRESHOLD = 6; static final int MIN_TREEIFY_CAPACITY = 64; Чому і як використовуються ці константи? Я хочу кілька наочних прикладів для цього. …

5
Чому я не можу зіставити цілі числа з рядками під час потокової передачі з масиву?
Цей код працює (взято в Javadoc): List<Integer> numbers = Arrays.asList(1, 2, 3, 4); String commaSeparatedNumbers = numbers.stream() .map(i -> i.toString()) .collect(Collectors.joining(", ")); Цей не може бути скомпільований: int[] numbers = {1, 2, 3, 4}; String commaSeparatedNumbers = Arrays.stream(numbers) .map((Integer i) -> i.toString()) .collect(Collectors.joining(", ")); IDEA каже мені, що у мене …

6
Використання потоків для збору в TreeSet за допомогою спеціального компаратора
Працюючи в Java 8, у мене є таке TreeSetвизначення: private TreeSet<PositionReport> positionReports = new TreeSet<>(Comparator.comparingLong(PositionReport::getTimestamp)); PositionReport є досить простим класом, визначеним таким чином: 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, …

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.