Java 8 java.time.temporal. TemporalAdjusters und Stream.flatMap() Tutorial
Veröffentlicht: 2020-09-09
Es ist fast 2 Jahre her, dass Java 8 im März 2014 veröffentlicht wurde. Ich bin sicher, dass die meisten Unternehmen immer noch Java 7 mit Apache Tomcat in ihrer Produktionsumgebung verwenden, aber in letzter Zeit nimmt es etwas Fahrt auf.
Da die meisten Unternehmen immer noch Java 7 verwenden, gibt es einige Funktionen, die von der Welt unbemerkt bleiben.
Vor einiger Zeit haben wir einen ausführlichen Artikel über Java 8 Stream API und Lambda Expression geschrieben. In diesem Tutorial werden wir das Beispiel java.time.temporal.TemporalAdjusters
und flatMap()
.
TemporalObjects
Was sind tempoalObjects
in Java? Es handelt sich um eine Schnittstelle auf Framework-Ebene, die sich mit Datums- und Zeitobjekten befasst, hauptsächlich read-only objects
, die den Zugriff auf generic manner
ermöglichen.
TemporalAdjusters
TemporalAdjusters sind ein wichtiges Werkzeug zum Ändern zeitlicher Objekte. Es gibt zwei Möglichkeiten, TemporalAdjuster zu verwenden.
- Rufen Sie die Methode direkt auf der Schnittstelle auf
- Verwenden Sie Temporal.with (TemporalAdjuster)

Stream.flatMap()
Java map
und flatMap
können auf einen Stream<T>
angewendet werden und beide geben einen Stream<R>
zurück. Was ist ein Unterschied?
-
map
-Operation erzeugt einen Ausgabewert für jeden Eingabewert -
flatMap
Operation erzeugt eine beliebige Anzahl (null oder mehr) Werte für jeden Eingabewert
Beginnen wir mit dem Tutorial
- Erstellen Sie die Klasse CrunchifyJava8TemporalAdjustersAndFlatMap.java
- Wir werden zwei einfache Methoden erstellen
- crunchifyStreamFlatMapBeispiel
- crunchifyTemporalExample
- Alle Details werden in jeder Methode selbst als Kommentar bereitgestellt
- Führen Sie das Programm aus und überprüfen Sie das Ergebnis
- Stellen Sie sicher, dass Sie JDK 8 in der Eclipse-Umgebung eingerichtet haben
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 ) ) ) ; } } |
Ausgabe:
Hier ist ein Konsolenergebnis. Führen Sie einfach das obige Java-Programm aus und Sie werden das Ergebnis wie unten sehen.

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 |
Lassen Sie uns wissen, wenn Sie auf ein Problem stoßen, das das obige Programm ausführt.