Страницы

Поиск по вопросам

среда, 31 октября 2018 г.

Помогите перевести мою задачу на стримы JAVA8 JAVA9

Учу сейчас стримы из Java 8 и JAVA 9. Проблема такая, как вначале пропустить строки файла после позиции END OF HEADER(предпоследняя строка файла), а затем считать каждое значение(оставшиеся цифры) и возможно ли мою задачу сделать на стримах?.
2.10 N: GPS NAV DATA RINEX VERSION / TYPE teqc 2017Feb10 UNAVCO Archive Ops 20170418 19:33:16UTCPGM / RUN BY / DATE 9.2160D+04 -1.1469D+05 -1.3107D+05 7.2090D+05 ION BETA 9.313225746155D-10 3.552713678801D-15 233472 1930 DELTA-UTC: A0,A1,T,W END OF HEADER 29 17 1 1 2 0 0.0 6.356909871101D-04-2.046363078989D-12 0.000000000000D+00
Начал делать так:
try { Files.lines(Paths.get("src/main/java/ab010010.17n"), StandardCharsets.UTF_8).// дальше что применять и множества методов?; } catch (IOException e) { e.printStackTrace(); }


Ответ

В Java9 появился метод потока dropWhile, серьёзно облегчающий вашу задачу:
Files.lines(Paths.get("src/main/java/ab010010.17n"), StandardCharsets.UTF_8) .dropWhile(s -> !s.contains("END OF HEADER")) .skip(1) .map(s -> s.split(" ")) .flatMap(Arrays::stream) .filter(i -> !i.isEmpty()) .forEach(System.out::println);

Комментариев нет:

Отправить комментарий