Вопросы с тегом «java-8»

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

5
Когда мне следует использовать потоки?
Я просто столкнулся с вопросом при использовании a Listи его stream()метода. Хотя я знаю, как их использовать, я не совсем уверен, когда их использовать. Например, у меня есть список, содержащий разные пути в разные места. Теперь я хотел бы проверить, содержит ли один заданный путь какой-либо из путей, указанных в …


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чек. Если я …
99 java  lambda  java-8  optional 

5
Почему Collections.sort использует Mergesort, а Arrays.sort - нет?
Я использую JDK-8 (x64). Для Arrays.sort(примитивов) я нашел в документации по Java следующее: Алгоритм сортировки - это Dual-Pivot Quicksort от Владимира Ярославского, Джона Бентли и Джошуа Блоха. Для Collections.sort(объектов) я нашел этот "Тимсорт": Эта реализация представляет собой стабильную, адаптивную, итеративную сортировку слиянием ... Эта реализация выгружает указанный список в массив, …

6
Превратите будущее Java в CompletableFuture
В Java 8 представлена CompletableFutureновая реализация Future, которую можно компоновать (включает набор методов thenXxx). Я хотел бы использовать только это, но многие библиотеки, которые я хочу использовать, возвращают только несоставные Futureэкземпляры. Есть ли способ обернуть возвращенные Futureэкземпляры внутри, CompleteableFutureчтобы я мог их скомпоновать?
97 java  java-8  future 


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

1
Completetablefuture join vs 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
Почему в Java 8 емкость ArrayList по умолчанию равна нулю?
Насколько я помню, до Java 8 емкость по умолчанию ArrayListбыла 10. Удивительно, но комментарий к конструктору по умолчанию (void) по-прежнему говорит: 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 from …
94 java  arraylist  java-8 

4
Когда инициализируется интерфейс с методом по умолчанию?
При поиске ответа на этот вопрос в спецификации языка Java я узнал, что Перед инициализацией класса должен быть инициализирован его прямой суперкласс, но интерфейсы, реализованные классом, не инициализируются. Точно так же суперинтерфейсы интерфейса не инициализируются до инициализации интерфейса. Из собственного любопытства попробовал и, как и ожидалось, интерфейс InterfaceTypeне инициализировался. public …

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 сообщает мне, что у меня …

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

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; Почему и как используются эти константы? Мне нужны наглядные примеры для этого. Как они добиваются …


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.