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

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


2
Як отримати ZoneOffset за замовчуванням у Java8?
З java8 ми знаємо, що use ZoneId.default()може отримати системний за замовчуванням ZoneId, але як отримати за замовчуванням ZoneOffset? Я бачу, що a ZoneIdмає деякі "правила", і кожне правило має a ZoneOffset, це означає, що a ZoneIdможе мати більше одного ZoneOffset?

4
Додавання нового значення до існуючого потоку
Чи є хороший спосіб додати нову вартість до існуючої Stream? Все, що я можу уявити, - це приблизно таке: public <T> Stream<T> addToStream(Stream<T> stream, T elem ) { List<T> result = stream.collect(Collectors.toList()); result.add(elem); return result.stream(); } Але я шукаю щось більш лаконічне, що я міг би використовувати в лямбда-вираженні без …
79 java  java-8  wildcard 

7
У чому різниця між putIfAbsent та computeIfAbsent у Java 8 Map?
Читаючи цікаві статті, хлопці стверджують, що різниця між цими двома функціями: Обидві функції прагнуть додати елемент, якщо вказаний Ключ ще не присутній у Map. putIfAbsent додає елемент із заданим значенням, тоді як computeIfAbsent додає елемент зі значенням, обчисленим за допомогою ключа. http://www.buggybread.com/2014/10/java-8-difference-between-map.html І Ми бачили, що putIfAbsent усуває обов’язковий спосіб …
79 java  java-8 

2
Чому \ R поводиться по-різному у регулярних виразах між Java 8 та Java 9?
Наступний код компілюється як в Java 8, так і в 9, але поводиться по-різному. class Simple { static String sample = "\nEn un lugar\r\nde la Mancha\nde cuyo nombre\r\nno quiero acordarme"; public static void main(String args[]){ String[] chunks = sample.split("\\R\\R"); for (String chunk: chunks) { System.out.println("Chunk : "+chunk); } } } …
78 java  regex  unicode  java-8  java-9 

3
Чи є спосіб порівняти лямбди?
Скажімо, у мене є Перелік об’єктів, які були визначені за допомогою лямбда-виразів (закриття). Чи є спосіб їх перевірити, щоб їх можна було порівняти? Код, який мене найбільше цікавить, це List<Strategy> strategies = getStrategies(); Strategy a = (Strategy) this::a; if (strategies.contains(a)) { // ... Повний код import java.util.Arrays; import java.util.List; public …
78 java  lambda  java-8 

9
Монади з Java 8
Щоб допомогти зрозуміти, що таке монада, чи може хтось навести приклад використання Java? Чи можливі вони? Лямбда-вирази можливі за допомогою java, якщо ви завантажите JDK8, сумісний з лямбда-зв’язком, звідси http://jdk8.java.net/lambda/ Приклад лямбди з використанням цього JDK наведено нижче, чи може хтось надати порівняно просту монаду? public interface TransformService { int[] …
78 java  java-8  monads  optional 


3
Чому ця програма Java 8 не компілюється?
Ця програма чудово компілюється в Java 7 (або в Java 8 з -source 7), але не вдається скомпілювати з Java 8: interface Iface<T> {} class Impl implements Iface<Impl> {} class Acceptor<T extends Iface<T>> { public Acceptor(T obj) {} } public class Main { public static void main(String[] args) { Acceptor<?> …

3
Collectors.toMap () keyMapper - більш стислий вираз?
Я намагаюся придумати більш стислий вираз для параметра функції "keyMapper" у наступному Collectors.toMap()виклику: List<Person> roster = ...; Map<String, Person> map = roster .stream() .collect( Collectors.toMap( new Function<Person, String>() { public String apply(Person p) { return p.getLast(); } }, Function.<Person>identity())); Здається, я мав би змогу вбудувати його за допомогою лямбда-виразу, але …

4
Java8 java.util.Date перетворення в java.time.ZonedDateTime
Я отримую наступний виняток під час спроби конвертувати java.util.Dateв java.time.LocalDate. java.time.DateTimeException: Unable to obtain ZonedDateTime from TemporalAccessor: 2014-08-19T05:28:16.768Z of type java.time.Instant Код такий: public static Date getNearestQuarterStartDate(Date calculateFromDate){ int[] quaterStartMonths={1,4,7,10}; Date startDate=null; ZonedDateTime d=ZonedDateTime.from(calculateFromDate.toInstant()); int frmDateMonth=d.getMonth().getValue(); Чи є щось не так у використанні ZonedDateTimeкласу? Відповідно до документації, це повинно перетворити …

2
Чому StringBuilder # додається (int) швидше в Java 7, ніж у Java 8?
Досліджуючи невеликі дебати з використанням "" + nі Integer.toString(int)для перетворення цілочисеного примітиву у рядок, я написав цей мікровивідний знак JMH: @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 StringBuilder().append(this.counter++).toString(); } @GenerateMicroBenchmark public String …


3
Рекурсивний виклик 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 + …

10
Як отримати MethodInfo посилання на метод Java 8?
Будь ласка, подивіться на такий код: Method methodInfo = MyClass.class.getMethod("myMethod"); Це працює, але ім'я методу передається як рядок, тому це буде скомпільовано, навіть якщо myMethod не існує. З іншого боку, Java 8 вводить функцію посилання на метод. Це перевіряється під час компіляції. Можна скористатися цією функцією, щоб отримати інформацію про …

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