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

Використовуйте цей тег для питань, пов’язаних із використанням API Stream. Він був введений в Java 8 і підтримує операції в функціональному стилі над потоками значень, такими як фільтр-карта-зменшення трубопроводів для колекцій.

7
Приклад методу 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) Повертає потік, що складається …

5
Чому Stream.allMatch () повертає true для порожнього потоку?
Ми з колегою мали помилку, яка була зумовлена ​​припущенням, що allMatch()повернеться порожній потік false. if (myItems.allMatch(i -> i.isValid()) { //do something } Звичайно, це свого роду наша вина, якщо ми припускаємо і не читаємо документацію. Але я не розумію, чому allMatch()повертається поведінка за замовчуванням для порожнього потоку true. Що було …

4
Як зберегти порядок ітерацій списку під час використання Collections.toMap () у потоці?
Я створюю a Mapз Listнаступного: List<String> strings = Arrays.asList("a", "bb", "ccc"); Map<String, Integer> map = strings.stream() .collect(Collectors.toMap(Function.identity(), String::length)); Я хочу зберегти той самий порядок ітерацій, що і в List. Як я можу створити за LinkedHashMapдопомогою Collectors.toMap()методів?

10
Java 8: кращий спосіб підрахувати ітерації лямбди?
Я часто стикаюся з тією ж проблемою. Мені потрібно підрахувати пробіги лямбди для використання поза лямбдою . Наприклад: myStream.stream().filter(...).forEach(item -> { ... ; runCount++}); System.out.println("The lambda ran " + runCount + "times"); Проблема в тому, що runCount повинен бути final, тому він не може бути int. Це не може бути, …

9
Java 8: Форматування лямбда з новими рядками та відступами
Що я хотів би досягти за допомогою лямбда-відступу, це наступне: Багаторядна заява: String[] ppl = new String[] { "Karen (F)", "Kevin (M)", "Lee (M)", "Joan (F)", "Des (M)", "Rick (M)" }; List<String> strings = Arrays.stream(ppl) .filter( (x) -> { return x.contains("(M)"); } ).collect(Collectors.toList()); strings.stream().forEach(System.out::println); Однорядковий вираз: List<String> strings = Arrays.stream(ppl) …

5
Як я можу зібрати потік Java 8 у Guava ImmutableCollection?
Я хотів би зробити наступне: List<Integer> list = IntStream.range(0, 7).collect(Collectors.toList()); але таким чином, що отриманий список є реалізацією Гуави ImmutableList. Я знаю, що міг би це зробити List<Integer> list = IntStream.range(0, 7).collect(Collectors.toList()); List<Integer> immutableList = ImmutableList.copyOf(list); але я хотів би зібрати до нього безпосередньо. Я пробував List<Integer> list = IntStream.range(0, …

6
Java8: сума значень з конкретного поля об'єктів у списку
Припустимо, мати клас Obj class Obj{ int field; } і що у вас є список Objекземплярів, тобто List<Obj> lst. Тепер, як я можу знайти в Java8 з потоками суму значень полів int fieldіз об’єктів у списку lstза критерієм фільтрації (наприклад, для об’єкта o, критерієм є o.field > 10)?

6
Як створити новий список із властивістю об’єкта, який знаходиться в іншому списку
Уявіть, що у мене є список певних об’єктів: List<Student> І мені потрібно сформувати ще один список, включаючи idsз Studentsнаведеного у списку: List<Integer> Уникаючи використання циклу, чи можливо це досягти за допомогою колекцій apache або гуави ? Які методи повинні бути корисними для мого випадку?

4
Java 8: об'єднання списків з потоковим API
У мене така ситуація Map<Key, ListContainer> map; public class ListContainer{ List<AClass> lst; } Я повинен об’єднати всі списки lstз ListContainerоб’єктів на Mapкарті. public static void main(String args[]){ List<AClass> alltheObjectsAClass = map.values().stream(). // continue.... } Будь-яка ідея, як, використовуючи Java 8 потік API?

3
Перевірте примірник потоку
Я маю такий вираз: scheduleIntervalContainers.stream() .filter(sic -> ((ScheduleIntervalContainer) sic).getStartTime() != ((ScheduleIntervalContainer)sic).getEndTime()) .collect(Collectors.toList()); ... де scheduleIntervalContainersмає тип елемента ScheduleContainer: final List<ScheduleContainer> scheduleIntervalContainers Чи можна перевірити тип перед фільтром?

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
takeWhile () працює по-різному з flatmap
Я створюю фрагменти з takeWhile, щоб дослідити його можливості. При використанні спільно з flatMap поведінка не відповідає очікуванням. Знайдіть фрагмент коду нижче. String[][] strArray = {{"Sample1", "Sample2"}, {"Sample3", "Sample4", "Sample5"}}; Arrays.stream(strArray) .flatMap(indStream -> Arrays.stream(indStream)) .takeWhile(ele -> !ele.equalsIgnoreCase("Sample4")) .forEach(ele -> System.out.println(ele)); Фактичний результат: Sample1 Sample2 Sample3 Sample5 Очікуваний вихід: Sample1 Sample2 …

7
Чому filter () після flatMap () "не зовсім" ледачий у потоках Java?
У мене є такий зразок коду: System.out.println( "Result: " + Stream.of(1, 2, 3) .filter(i -> { System.out.println(i); return true; }) .findFirst() .get() ); System.out.println("-----------"); System.out.println( "Result: " + Stream.of(1, 2, 3) .flatMap(i -> Stream.of(i - 1, i, i + 1)) .flatMap(i -> Stream.of(i - 1, i, i + 1)) .filter(i …

2
Потік Java toArray () перетворює на певний тип масиву
Можливо, це дуже просто, але я насправді нуб у функціях Java 8 і не знаю, як це зробити. У мене є цей простий рядок, що містить наступний текст: "Ключ, ім'я" і я хочу перетворити цей рядок у масив String, розділяючи кожне значення комою (,), однак, я також хочу обрізати кожне …

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