java-8- все статьи тега ➜ страница 4


Наиболее эффективный способ получить последний элемент потока

поток не имеет last() способ: Stream<T> stream; T last = stream.last(); // No such method какой самый элегантный и/или эффективный способ получить последний элемент (или null для пустой поток)? ...

Java 8 поток с пакетной обработкой

у меня есть большой файл, который содержит список элементов. Я хотел бы создать пакет элементов, сделать HTTP-запрос с этим пакетом (все элементы необходимы в качестве параметров в HTTP-запросе). Я могу сделать это очень легко с for цикл, но как любитель Java 8, я хочу попробовать написать это с помощью Java 8 Stream framework (и воспользоваться преимуществами ленивой обработки). пример: List<String> batch = new ArrayList<>(BATCH_SIZE); for (int i = 0; i < data.size(); i++) { ...

Рекурсивный ConcurrentHashMap.вызов computeIfAbsent () никогда не завершается. Ошибка или"особенность"?

некоторое время назад, Я написал в блоге о функциональном способе вычисления чисел Фибоначчи Java 8 рекурсивно С ConcurrentHashMap кэш и новый, полезный computeIfAbsent() способ: import java.util.Map; import java.util.concurrent.ConcurrentHashMap; public class Test { static Map<Integer, Integer> cache = new ConcurrentHashMap<>(); public static void main(String[] args) { System.out.println( "f(" + 8 + ") = " + fibonacci(8)); } static int fibonac ...

Очень смущен выводом типа компаратора Java 8

я смотрел на разницу между Collections.sort и list.sort, в частности, в отношении использования Comparator статические методы и требуются ли типы param в лямбда-выражениях. Прежде чем мы начнем, я знаю, что могу использовать ссылки на методы, например Song::getTitle чтобы преодолеть мои проблемы, но мой запрос здесь не столько то, что я хочу исправить, но то, что я хочу получить ответ, т. е. почему компилятор Java обрабатывает его таким образом. это моя находка. Предположим, что мы есть ArrayL ...

Можно ли использовать Java 8 Stream API на Android API

Я прочитал этот пост здесь. Но все же я не могу запустить код, содержащий Java 8 Stream API функции, такие как следующие на minSdkVersion List<Car> newCars = cars.stream() .filter(s -> s.getColor().equals("red")) .collect(Collectors.toList()); Это не выполняется из-за сообщения об ошибке для вызова требуется уровень API 24 (текущая минута-15): java.утиль.Коллекция#трансляция Так кто-нибудь знает решение? ...

Java 8 Boolean.логический метод

в Java 8 новые методы в Boolean класс был добавлен. давайте просто поговорим об одном из них public static boolean Boolean.logicalOr(boolean a , boolean b) теперь мой вопрос, зачем они были нужны? в чем разница между следующими двумя случаями. boolean result = a || b; или Boolean result = Boolean.logicalOr(a,b); что такого особенного Boolean.logicalOr() и когда я должен предпочесть одну над другой. ...

Как преобразовать LocalDate в мгновение ока?

Я работаю с новым API DateTime Java 8. Как преобразовать LocalDate в мгновение? Я получаю исключение с LocalDate date = LocalDate.of(2012, 2, 2); Instant instant = Instant.from(date); и я не понимаю, почему. ...

Каково назначение ключевого слова по умолчанию в Java?

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

Java 8 способ работы с перечислением

мне интересно, как лучше всего в Java 8 работать со всеми значениями перечисления. В частности, когда вам нужно получить все значения и добавить его куда - нибудь, например, предположим, что у нас есть следующее перечисление: public enum Letter { A, B, C, D; } Я мог бы, конечно, сделать следующее: for (Letter l : Letter.values()) { foo(l); } но, я мог бы также добавить следующий метод определения перечисления: public static Stream<Letter> stream() { return Arrays.stream(Let ...

Java 8-опуская утомительный метод сбора

Java 8 stream api-очень хорошая функция, и мне это очень нравится. Одна вещь, которая действует мне на нервы, заключается в том, что 90% времени я хочу иметь вход в виде коллекции и выход в виде коллекций. Следствием этого является то, что я должен позвонить stream() и collect() способ все время: collection.stream().filter(p->p.isCorrect()).collect(Collectors.toList()); есть ли какой-либо Java api, который позволил бы мне пропустить поток и напрямую работать с коллекциями (например,linq в ...

Как конвертировать ZonedDateTime в Date?

Я пытаюсь установить серверное агностическое время даты в моей базе данных, и я считаю, что лучшая практика для этого-установить дату и время UTC. Мой сервер БД-это Cassandra, и драйвер БД для Java понимает только тип даты. Итак, предполагая, что в моем коде я использую новый Java 8 ZonedDateTime, чтобы получить UTC сейчас (ZonedDateTime.now(ZoneOffset.UTC)), Как я могу преобразовать этот экземпляр ZonedDateTime в класс даты "legacy"? ...

Лучший подход к обработке исключений функциональным способом

исключения, особенно проверенные, могут серьезно прервать поток логики программы, когда идиома FP используется в Java 8. Вот произвольный пример: String s1 = "oeu", s2 = "2"; Stream.of(s1, s2).forEach(s -> System.out.println(Optional.of(s).map(Integer::parseInt).get())); приведенный выше код прерывается, когда есть исключение для непростительной строки. Но скажите, что я просто хочу заменить это значение по умолчанию, так же, как я могу с Optional: Stream.of(s1, s2).forEach(s -> ...

Как извлечь эпоху из LocalDate и LocalDateTime?

как извлечь значение эпохи в Long экземпляров LocalDateTime или LocalDate? Я пробовал следующие, но это дает мне другие результаты: LocalDateTime time = LocalDateTime.parse("04.02.2014 19:51:01", DateTimeFormatter.ofPattern("dd.MM.yyyy HH:mm:ss")); System.out.println(time.getLong(ChronoField.SECOND_OF_DAY)); // gives 71461 System.out.println(time.getLong(ChronoField.EPOCH_DAY)); // gives 16105 что я хочу-это просто значение 1391539861 для локального datetime "04.02.2014 19:51:01". Мой час ...

Методы Java 8 по умолчанию нарушают совместимость с исходным кодом?

как правило, исходный код Java был совместим с прямой передачей. До Java 8, насколько я знаю, оба скомпилированные классы и источник был вперед совместим с более поздними выпусками JDK/JVM. [Обновление: это неверно, см. комментарии re 'enum' и т. д. Ниже. Однако, с добавлением методов по умолчанию в Java 8 это, кажется, больше не будет. например, библиотека, которую я использую и реализацией java.util.List который включает в себя List<V> sort(). Этот метод возвращает копию содержимого ...

Рендеринг Swing выглядит сломанным в JDK 1.8, правильно в JDK 1.7

Я установил IntelliJ IDEA (13.1.1 #IC-135.480) и JDK 1.8.0 (x64), и я создал некоторый графический интерфейс с помощью конструктора форм GUI. затем я запустил код и понял, что что-то не так. вот скриншот моего GUI: рендеринг шрифта, кажется, не в порядке. Кроме того, кнопка теряет свой текст, когда я наведу на него курсор мыши. поэтому я установил JDK 1.7.0_40 (x64), перекомпилировал проект и запустил его снова. следующая форма появляется, когда я использую JDK 1.7: рендеринг, кажется, ...

Преобразовать Java в будущем в класс CompletableFuture

Java 8 вводит CompletableFuture, новая реализация будущего, которая является составной (включает в себя кучу методов thenXxx). Я хотел бы использовать это исключительно, но многие из библиотек, которые я хочу использовать, возвращают только некомпозиционные Future экземпляров. есть ли способ обернуть возвращенный Future экземпляры внутри a CompleteableFuture чтобы я мог его сочинить? ...

цикл foreach в Java 8 для ввода карты

Я пытаюсь преобразовать старые обычные для каждого цикла до java7 в java8 для каждого цикла для набора записей карты, но я получаю ошибку. Вот код, который я пытаюсь преобразовать: for (Map.Entry<String, String> entry : map.entrySet()) { System.out.println("Key : " + entry.getKey() + " Value : " + entry.getValue()); } вот изменения, которые я сделал: map.forEach( Map.Entry<String, String> entry -> { System.out.println("Key : " + entry.getKey() + " Value : " ...

Список к будущей последовательности

Я пытаюсь преобразовать List<CompletableFuture<X>> до CompletableFuture<List<T>>. Это очень полезно, Так как у вас есть много асинхронных задач, и вам нужно получить результаты всех из них. если какой-либо из них терпит неудачу, то окончательное будущее терпит неудачу. Вот как я реализовал: public static <T> CompletableFuture<List<T>> sequence2(List<CompletableFuture<T>> com, ExecutorService exec) { if(com.isEmpty()){ ...

Java 8 Stream: разница между limit() и skip()

про Streams, когда я выполняю этот кусок кода public class Main { public static void main(String[] args) { Stream.of(1,2,3,4,5,6,7,8,9) .peek(x->System.out.print("nA"+x)) .limit(3) .peek(x->System.out.print("B"+x)) .forEach(x->System.out.print("C"+x)); } } Я получаю этот выход A1B1C1 A2B2C2 A3B3C3 потому что ограничение моего потока до первых трех компонентов заставляет действия A,B и C должен быть выполнен только три раза. попытк ...

Лямбда эта ссылка в java

Я хочу, чтобы преобразовать anonymous class до lambda expression. Но этот анонимный класс я использую this ключевое слово. например, я написал это просто Observer/Observable шаблон : import java.util.ArrayList; import java.util.Collection; public static class Observable { private final Collection<Observer> notifiables = new ArrayList<>(); public Observable() { } public void addObserver(Observer notifiable) { notifiables.add(notifiable); } public void removeObserv ...