Java 8 java.time.temporal. Учебник TemporalAdjusters и Stream.flatMap()
Опубликовано: 2020-09-09
Java 8 была выпущена почти 2 года назад, в марте 2014 года. Я уверен, что большинство компаний все еще используют Java 7 с Apache Tomcat в своей производственной среде, но в последнее время она набирает обороты.
Как и большинство компаний, все еще использующих Java 7, есть немало особенностей, незамеченных миром.
Когда-то мы написали подробную статью о Java 8 Stream API и Lambda Expression. В этом руководстве мы рассмотрим java.time.temporal.TemporalAdjusters
и flatMap()
.
ВременныеОбъекты
Что такое tempoalObjects
в Java? Это интерфейс уровня фреймворка, работающий с объектами даты и времени, в основном read-only objects
которые обеспечивают generic manner
доступ.
TemporalAdjusters
TemporalAdjusters — ключевой инструмент для изменения темпоральных объектов. Есть два способа использования TemporalAdjuster.
- Вызовите метод непосредственно в интерфейсе
- использовать Temporal.with(TemporalAdjuster)

Поток.flatMap()
map
Java и flatMap
можно применить к Stream<T>
, и они оба возвращают Stream<R>
. В чем разница?
- операция
map
производит одно выходное значение для каждого входного значения - Операция
flatMap
создает произвольное число (ноль или более) значений для каждого входного значения.
Приступим к Учебнику
- Создайте класс CrunchifyJava8TemporalAdjustersAndFlatMap.java
- Мы создадим два простых метода
- crunchifyStreamFlatMapExample
- crunchifyTemporalПример
- Все детали приведены в каждом методе в качестве комментария.
- Запустите программу и проверьте результат
- убедитесь, что вы установили JDK 8 в среде Eclipse
CrunchifyJava8TemporalAdjustersAndFlatMap.java
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 |
package crunchify . com . tutorials ; import java . time . DayOfWeek ; import java . time . LocalDateTime ; import java . time . temporal . TemporalAdjusters ; import java . util . ArrayList ; import java . util . HashSet ; import java . util . List ; import java . util . Set ; import java . util . stream . Collectors ; /** * @author Crunchify.com * Java 8 java.time.temporal. TemporalAdjusters and Stream.flatMap() Tutorial */ public class CrunchifyJava8TemporalAdjustersAndFlatMap { public static void main ( String [ ] args ) { // Stream.flatMap() example crunchifyStreamFlatMapExample ( ) ; // TemporalAdjuster example crunchifyTemporalExample ( ) ; } public static void crunchifyStreamFlatMapExample ( ) { List <CrunchifyCompany> companyList = new ArrayList < > ( ) ; CrunchifyCompany gName = new CrunchifyCompany ( "Google" ) ; gName . add ( "Gmail" ) ; gName . add ( "Docs" ) ; gName . add ( "Google Apps" ) ; CrunchifyCompany yName = new CrunchifyCompany ( "Yahoo" ) ; yName . add ( "YMail" ) ; yName . add ( "Yahoo Sites" ) ; companyList . add ( gName ) ; companyList . add ( yName ) ; // Returns a stream consisting of the results of replacing each element of this stream with the contents of a mapped // stream produced by applying the provided mapping function to each element crunchifyLog ( "Here is a list of all Company product list:" ) ; List <String> crunchifyList = companyList . stream ( ) . flatMap ( element - > element . getProducts ( ) . stream ( ) ) . collect ( Collectors . toList ( ) ) ; crunchifyLog ( crunchifyList . toString ( ) ) ; } private static void crunchifyLog ( String msg ) { System . out . println ( msg ) ; } static class CrunchifyCompany { private String companyName ; private final Set <String> products ; public CrunchifyCompany ( String companyName ) { this . setCompanyName ( companyName ) ; this . products = new HashSet < > ( ) ; } public void add ( String animal ) { // add(): Adds the specified element to this set if it is not already present (optional operation). // More formally, adds the specified element e to this set if the set contains no element e2 such that Objects.equals(e, e2). // If this set already contains the element, the call leaves the set unchanged and returns false. this . products . add ( animal ) ; } public Set <String> getProducts ( ) { return products ; } public String getCompanyName ( ) { return companyName ; } public void setCompanyName ( String companyName ) { this . companyName = companyName ; } } public static void crunchifyTemporalExample ( ) { // A date-time without a time-zone in the ISO-8601 calendar system // String time = LocalDateTime.now().format(DateTimeFormatter.ISO_OFFSET_DATE_TIME); // Let's return currentitme - 1 year LocalDateTime crunchifyTime = LocalDateTime . now ( ) . minusYears ( 1 ) ; // TemporalAdjusters: Adjusters are a key tool for modifying temporal objects crunchifyLog ( "\n- get 1st Day of Month: " + crunchifyTime . with ( TemporalAdjusters . firstDayOfMonth ( ) ) ) ; // Returns the "last day of month" adjuster crunchifyLog ( "- get Last Day of Month: " + crunchifyTime . with ( TemporalAdjusters . lastDayOfMonth ( ) ) ) ; // Returns the "first day of year" adjuster crunchifyLog ( "- get 1st Day of Year: " + crunchifyTime . with ( TemporalAdjusters . firstDayOfYear ( ) ) ) ; // Returns the next day-of-week adjuster crunchifyLog ( "- get next Day Of Week: " + crunchifyTime . with ( TemporalAdjusters . next ( DayOfWeek . WEDNESDAY ) ) ) ; // Returns the "last day of year" adjuster crunchifyLog ( "- get last Day of Year: " + crunchifyTime . with ( TemporalAdjusters . lastDayOfYear ( ) ) ) ; // Returns the last in month adjuster crunchifyLog ( "- get last Day Of Week: " + crunchifyTime . with ( TemporalAdjusters . lastInMonth ( DayOfWeek . FRIDAY ) ) ) ; } } |
Выход:
Вот результат консоли. Просто запустите вышеуказанную программу Java, и вы увидите результат, как показано ниже.

1 2 3 4 5 6 7 8 9 |
Here is a list of all Company product list : [ Gmail , Docs , Google Apps , YMail , Yahoo Sites ] - get 1st Day of Month : 2015 - 01 - 01T12 : 07 : 11.980 - get Last Day of Month : 2015 - 01 - 31T12 : 07 : 11.980 - get 1st Day of Year : 2015 - 01 - 01T12 : 07 : 11.980 - get next Day Of Week : 2015 - 01 - 14T12 : 07 : 11.980 - get last Day of Year : 2015 - 12 - 31T12 : 07 : 11.980 - get last Day Of Week : 2015 - 01 - 30T12 : 07 : 11.980 |
Дайте нам знать, если у вас возникнут какие-либо проблемы с запуском вышеуказанной программы.