Java 8 java.time.temporal TemporalAdjusters และ Stream.flatMap() บทช่วยสอน
เผยแพร่แล้ว: 2020-09-09
เกือบ 2 ปีแล้วที่ Java 8 เปิดตัวในเดือนมีนาคม 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 เป็นเครื่องมือสำคัญสำหรับการปรับเปลี่ยนวัตถุชั่วคราว คุณสามารถใช้ TemporalAdjuster ได้สองวิธี
- เรียกใช้เมธอดบนอินเทอร์เฟซโดยตรง
- ใช้ Temporal.with (TemporalAdjuster)

Stream.flatMap()
map
Java และ flatMap
สามารถใช้กับ Stream<T>
และทั้งคู่ส่งคืน Stream<R>
อะไรคือความแตกต่าง?
- การทำงาน
map
สร้างค่าเอาต์พุตหนึ่งค่าสำหรับแต่ละค่าอินพุต - การดำเนินการ
flatMap
สร้างค่าตัวเลขที่กำหนดเอง (ศูนย์หรือมากกว่า) สำหรับแต่ละค่าอินพุต
มาเริ่มกันเลยกับบทช่วยสอน
- สร้างคลาส CrunchifyJava8TemporalAdjustersAndFlatMap.java
- เราจะสร้างสองวิธีง่ายๆ
- crunchifyStreamFlatMapExample
- กระทืบTemporalตัวอย่าง
- รายละเอียดทั้งหมดมีให้ในแต่ละวิธีตามความคิดเห็น
- เรียกใช้โปรแกรมและผลการชำระเงิน
- ตรวจสอบให้แน่ใจว่าคุณได้ตั้งค่า 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 |
แจ้งให้เราทราบหากคุณประสบปัญหาในการใช้งานโปรแกรมข้างต้น