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


Java 8 потоков-сбор против уменьшения

когда вы используете collect() vs reduce()? У кого-нибудь есть хорошие, конкретные примеры того, когда определенно лучше идти в ту или иную сторону? Javadoc упоминает, что collect () является изменяемым сокращением. учитывая, что это изменчивое сокращение, я предполагаю, что оно требует синхронизации (внутренне), что, в свою очередь, может нанести ущерб производительности. Предположительно reduce() более легко распараллеливается за счет необходимости создания новых данных структура для возвр ...

Как указать типы функций для методов void (не Void) в Java8?

я играю с Java 8, чтобы узнать, как функционирует в качестве граждан первого класса. У меня есть следующий фрагмент: package test; import java.util.*; import java.util.function.*; public class Test { public static void myForEach(List<Integer> list, Function<Integer, Void> myFunction) { list.forEach(functionToBlock(myFunction)); } public static void displayInt(Integer i) { System.out.println(i); } public static void main(String[] args) { Li ...

Что такое "тип SAM" в Java?

читая спецификацию Java-8, я продолжаю видеть ссылки на "типы SAM". Я не смог найти четкого объяснения, что это. Что такое тип SAM и каков пример сценария, когда он может быть использован? ...

Лямбда-выражение и универсальный метод

Предположим, у меня есть универсальный интерфейс: interface MyComparable<T extends Comparable<T>> { public int compare(T obj1, T obj2); } и метод sort: public static <T extends Comparable<T>> void sort(List<T> list, MyComparable<T> comp) { // sort the list } я могу вызвать этот метод и передаем лямбда-выражение в качестве аргумента: List<String> list = Arrays.asList("a", "b", "c"); sort(list, (a, b) -> a.compareTo(b)); это бу ...

Java8 лямбда против анонимных классов

Я немного изучил это и нашел несколько интересных примеров того, как лямбда-выражения будут систематически заменять эти классы, например метод сортировки коллекции, который использовался для получения анонимного экземпляра Comparator для выполнения сортировки: Collections.sort(personList, new Comparator<Person>(){ public int compare(Person p1, Person p2){ return p1.firstName.compareTo(p2.firstName); } }); теперь можно сделать с помощью Lambdas: Collections.sort(personList, (Pe ...

В чем разница между PermGen и Metaspace?

до Java 7 в памяти JVM была область под названием PermGen, где JVM использовал для хранения своих классов. В Java 8 он был удален и заменен областью под названием Metaspace. каковы наиболее важные различия между PermGen и Metaspace? единственная разница, которую я знаю, это java.lang.OutOfMemoryError: PermGen space больше не может быть брошен и параметр VM MaxPermSize игнорируется. ...

В потоках Java peek действительно только для отладки?

Я читаю о потоках Java и открываю для себя новые вещи, как я иду вперед. Одна из новых вещей, которые я нашел, была ...

Java 8 Streams FlatMap пример метода

Я проверял предстоящий Java update, а именно: Java 8 or JDK 8. Да, я нетерпелив, есть много нового материала, но, есть что-то, чего я не понимаю, какой-то простой код: final Stream<Integer>stream = Stream.of(1,2,3,4,5,6,7,8,9,10); stream.flatMap(); javadocs являются public <R> Stream<R> flatMap(Function<? super T,? extends Stream<? extends R>> mapper) возвращает поток, состоящий из результатов замены каждого элемента этого потока содержимым отображенного ...

Сбор последовательных пар из потока

учитывая поток, такой как { 0, 1, 2, 3, 4 }, Как я могу наиболее элегантно преобразовать его в заданную форму: { new Pair(0, 1), new Pair(1, 2), new Pair(2, 3), new Pair(3, 4) } (предполагая, конечно, что я определил пару классов)? Edit: речь идет не только о ints или примитивных потоках. Ответ должен быть общим для потока любого типа. ...

Как отлаживать поток ().карта(...) с лямбда-выражениями?

в нашем проекте мы переходим на java 8 и тестируем его новые возможности. в моем проекте я использую предикаты и функции Guava для фильтрации и преобразования некоторых коллекций с помощью Collections2.transform и Collections2.filter. в этой миграции мне нужно изменить, например, код guava на изменения java 8. Итак, изменения, которые я делаю, являются такими: List<Integer> naturals = Lists.newArrayList(1,2,3,4,5,6,7,8,9,10,11,12,13); Function <Integer, Integer> duplicate = new ...

Почему StringBuilder#append (int) быстрее в Java 7, чем в Java 8?

во время расследования для спор w. r. t. using "" + n и Integer.toString(int) чтобы преобразовать целочисленный примитив в строку, я написал это JMH microbenchmark: @Fork(1) @OutputTimeUnit(TimeUnit.MILLISECONDS) @State(Scope.Benchmark) public class IntStr { protected int counter; @GenerateMicroBenchmark public String integerToString() { return Integer.toString(this.counter++); } @GenerateMicroBenchmark public String stringBuilder0() { return new Strin ...

Java 8 лямбда-выражения-как насчет нескольких методов во вложенном классе

Я читаю о новых функциях по адресу: http://www.javaworld.com/article/2078836/java-se/love-and-hate-for-java-8.html Я видел пример ниже: Используя Анонимный Класс: button.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent ae) { System.out.println("Action Detected"); } }); С Лямбда: button.addActionListener(e -> { System.out.println("Action Detected"); }); что бы кто-то сделать с MouseListener если они хотели реализовать несколько методо ...

Использование JavaFX в JRE 8, Ошибка "ограничение доступа"

при попытке использовать связанные классы javafx в моем новом проекте java 8 я получаю ошибку ограничения доступа от eclipse. До сих пор единственное "решение", которое я смог найти, - это сказать eclipse игнорировать ограничение доступа, но меня это не устраивает. Пример ошибки: Access restriction: The type Pane is not accessible due to restriction on required library C:Program FilesJavajre8_0libextjfxrt.jar Я использую Eclipse Kepler с патчем Eclipse JDT для java 8. это, кажется, п ...

Java 1.8 ASM ClassReader не удалось проанализировать файл класса-вероятно, из - за новой версии файла класса Java, которая еще не поддерживается

мое веб-приложение отлично работает на JDK 1.7, но падает на 1.8 со следующим исключением (во время запуска сервера приложений с Jetty 8). Я использую весеннюю версию: 3.2.5.ОСВОБОЖДАТЬ. исключения: org.springframework.core.NestedIOException: ASM ClassReader failed to parse class file - probably due to a new Java class file version that isn't supported yet Я предполагаю, что проблема возникает из-за Весны и "АСМ.jar " библиотека, от которой это зависит. Как мне решить эту проблему? ...

Получить последний элемент потока / списка в одной строке

как я могу получить последний элемент потока или списка в следующем коде? здесь data.careas это 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? как вы можете видеть, получая первый элемент, с определенным filter, это не сложно. однако получение последнего элемента в одном лайнере-настоящая боль: каж ...

Повторите перечисление в Java 8

можно ли повторить Enumeration С помощью лямбда-выражения? Каким будет лямбда-представление следующего фрагмента кода: Enumeration<NetworkInterface> nets = NetworkInterface.getNetworkInterfaces(); while (nets.hasMoreElements()) { NetworkInterface networkInterface = nets.nextElement(); } Я не нашел в нем никакого потока. ...

Как использовать новую функцию computeIfAbsent?

Я очень хочу использовать карта.computeIfAbsent но прошло слишком много времени с тех пор, как лямбда учился в университете. почти непосредственно из документов: он дает пример старого способа делать вещи: 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); } и новый способ: map.computeIfAbsent(key, k -> n ...

Ошибка Android Studio: ошибка: CreateProcess error=216, эта версия %1 несовместима с версией Windows, которую вы используете

установлен Android Studio 2.2 Preview 2 и получает эту ошибку: ошибка: CreateProcess error=216, эта версия %1 не совместима с версией Windows, которую вы используете. Проверьте системную информацию Вашего компьютера, а затем обратитесь к издателю программного обеспечения скриншот: я переустановил JDK, все та же проблема. Я даже пытался использовать встроенный JDK, но все еще имея то же самое вопрос: ...

Как сравнить равенство списков массивов с современной Java?

У меня есть два списка массивов. Как я могу легко сравнить равенство этих С Java 8 и его характеристики, без использования внешних библиотек? Я ищу "лучшее" (более высокий уровень, более короткий, более эффективный) решение, чем такой код грубой силы (непроверенный код, может содержать опечатки и т. д., а не вопрос): boolean compare(List<String[]> list1, List<String[]> list2) { // tests for nulls etc omitted if(list1.size() != list2.size()) { return false; } ...

Разбиение списка на подсписки по элементам

у меня есть этот список (List<String>): ["a", "b", null, "c", null, "d", "e"] и я хотел бы что-то вроде этого: [["a", "b"], ["c"], ["d", "e"]] другими словами, Я хочу разделить свой список на подсписки с помощью null значение в качестве разделителя, чтобы получить список списков (List<List<String>>). Я ищу решение Java 8. Я пробовал с Collectors.partitioningBy но я не уверен, что это то, что я ищу. Спасибо! ...