ประสบการณ์ครั้งแรกของสตรีม
สตรีมเป็นคุณสมบัติที่สำคัญของคอลเลกชันการดำเนินการใน Java 8 มาดูกันก่อนว่าสตรีมถูกกำหนดใน Java: ก่อน
"ลำดับขององค์ประกอบที่รองรับการดำเนินการตามลำดับและแบบขนาน"
ตีความประโยคข้างต้นกันเถอะ:
1. สตรีมเป็นคอลเลกชันขององค์ประกอบซึ่งทำให้สตรีมดูเหมือนตัววนซ้ำ
2. สามารถรองรับการดำเนินงานของการรวมกระแสดั้งเดิมตามลำดับและขนาน
มีหลายวิธีในการสร้างสตรีมและมีหลายวิธีในการสร้างคอลเลกชันนอกเหนือจากวิธีที่พบบ่อยที่สุด
รายการเพื่อสตรีม
รายการสืบทอดมาจากอินเทอร์เฟซคอลเลกชันและคอลเลกชันให้วิธีการสตรีม ()
รายการ <จำนวนเต็ม> list = lists.newarraylist (1, 2, 3); สตรีม <จำนวนเต็ม> สตรีม = list.stream ();
อาร์เรย์เพื่อสตรีม
สำหรับอาร์เรย์อาร์เรย์ให้วิธีสตรีม ()
สตริง [] arr = สตริงใหม่ [] {"a", "b", "c"}; สตรีม <String> สตรีม = array.stream (arr); แผนที่เพื่อสตรีม
แผนที่ไม่ใช่ลำดับไม่ใช่คอลเลกชันและไม่มีวิธีที่จะแปลงเป็นสตรีมโดยตรง () แต่ชุด entrySet () ถูกตั้งค่าและสามารถแปลงได้
แผนที่ <สตริงวัตถุ> map = maps.newhashmap (); สตรีม <entry <string, object >> stream = map.entryset (). สตรีม ();
สร้างสตรีมโดยตรง
สตรีมยังให้ API เพื่อสร้างสตรีมโดยตรงซึ่งสามารถเข้าใจได้อย่างคร่าวๆว่าเป็นรายการ เพราะอาร์เรย์ภายในถูกนำไปใช้
สตรีม <จำนวนเต็ม> จำนวนเต็ม = stream.of (1, 2, 3);
อ่านสตรีมของไฟล์
ผู้ที่ใช้ Linux จะชื่นชมสัญลักษณ์ท่อในบรรทัดคำสั่งและสัญลักษณ์ท่อสามารถประมวลผลได้อย่างต่อเนื่อง ฟังก์ชั่นที่คล้ายกันสามารถนำไปใช้ได้เมื่ออ่านไฟล์ใน Java
Long Uniquewords = 0; ลอง (สตรีม <String> lines = files.lines (paths.get ("data.txt"), charset.defaultCharset ())) {uniquewords = lines.flatmap (l -> array.stream (l.split ("))) .distinct () สร้างการไหลที่ไม่มีที่สิ้นสุดผ่านฟังก์ชั่น
สตรีมให้ซ้ำเพื่อสร้างลำดับที่ไม่มีที่สิ้นสุดซึ่งเป็นลำดับที่ไม่มีที่สิ้นสุดตามค่าเริ่มต้น คุณสามารถใช้แลมบ์ดาเพื่อตั้งค่ากฎการสร้างลำดับเช่นการเพิ่ม 2 ในแต่ละครั้ง
stream.iterate (0, n -> n + 2) .limit (10). foreach (system.out :: println);
ตัวอย่างเช่นลำดับ Fibonacci
stream.iterate (int ใหม่ [] {0, 1}, t -> int ใหม่ [] {t [1], t [0] + t [1]}) .Limit (20) .map (t -> t [0]) สตรีมยังมีวิธีการสร้างอื่นเพื่อสร้างลำดับ รับฟังก์ชั่นลำดับที่สร้างขึ้นที่ผู้ใช้ระบุ intsupplier
intsupplier fib = new intsupplier () {ส่วนตัว int previous = 0; INT INT ปัจจุบัน = 1; @Override สาธารณะ int getAsInt () {int oldPrevious = this.previous; int nextValue = this.previous + this.current; this.previous = this.current; this.current = nextValue; กลับมาเก่าแก่; }}; intstream.generate (fib) .limit (10) .foreach (system.out :: println);สรุป
ข้างต้นเป็นเนื้อหาทั้งหมดของบทความนี้ ฉันหวังว่าเนื้อหาของบทความนี้จะมีค่าอ้างอิงบางอย่างสำหรับการศึกษาหรือที่ทำงานของทุกคน หากคุณมีคำถามใด ๆ คุณสามารถฝากข้อความไว้เพื่อสื่อสาร ขอบคุณสำหรับการสนับสนุน Wulin.com