แพ็คเกจเพิ่มเติมใหม่ใน Java 8 หรือที่เรียกว่า เพิ่ม java.util.stream สำหรับ ผู้ใช้สำหรับประสบการณ์การเขียนโปรแกรมที่มีประสิทธิภาพ สตรีมสามารถกำหนดเป็นลำดับของออบเจ็กต์ได้โดยรองรับหลายวิธี ในบทความนี้เราจะสำรวจสตรีมอิน
คำแนะนำต่อไปนี้จะครอบคลุมอยู่ในบทความนี้
ก่อนที่เราจะเริ่มบทความนี้เกี่ยวกับ Stream In Java ให้เรามาดูคุณสมบัติที่สำคัญบางอย่าง
สตรีมใน Java: คุณสมบัติ
- สตรีมไม่ใช่โครงสร้างข้อมูลและไม่ได้จัดเก็บองค์ประกอบ Collections, Arrays หรือ I / O Channels เป็นที่ที่รับอินพุตจาก
- แหล่งที่มาของสตรีมยังคงไม่ได้รับการแก้ไขหลังจากดำเนินการกับสตรีมแล้ว ตัวอย่างเช่นการกรองสตรีมเป็นเพียงการสร้างสตรีมใหม่โดยไม่มีองค์ประกอบที่ถูกกรองแทนที่จะแก้ไขสตรีมดั้งเดิม
- การดำเนินการรวมเช่นกรองลดจับคู่ค้นหา ฯลฯ ได้รับการสนับสนุนโดยสตรีม
- ความเกียจคร้านถือได้ว่าเป็นคุณลักษณะของสตรีมเนื่องจากจะประเมินรหัสเมื่อจำเป็นเท่านั้น
- การเยี่ยมชมองค์ประกอบที่มีอยู่ในสตรีมสามารถทำได้เพียงครั้งเดียวในช่วงชีวิตของสตรีม ต้องสร้างสตรีมใหม่เพื่อทบทวนองค์ประกอบเดิมที่มีอยู่ในแหล่งที่มา
ดำเนินการต่อด้วยบทความนี้เกี่ยวกับสตรีมใน Java
กำลังสร้างสตรีม
สตรีมสามารถสร้างได้ด้วยวิธีการต่อไปนี้:
- กระแส() - สตรีมตามลำดับจะถูกส่งกลับคอลเลกชันถือเป็นแหล่งที่มา
- ParallelStream () - ส่งคืนสตรีมแบบขนาน คอลเลกชันถือเป็นแหล่งที่มา
List strings = Arrays.asList ('Hello', '', 'Hi', 'Hola', 'Bonjour', '', 'Namaste') List filtered = strings.stream (). filter (string ->! string. isEmpty ()) รวบรวม (Collectors.toList ())
ดำเนินการต่อด้วยบทความนี้เกี่ยวกับสตรีมใน Java
การดำเนินการบนสตรีม:
การดำเนินงานระดับกลาง:
แผนที่
องค์ประกอบที่มีอยู่ในคอลเลกชันสามารถแมปกับวัตถุอื่น ๆ ตามเพรดิเคตที่ส่งผ่านมาเป็นอาร์กิวเมนต์ ตัวอย่างต่อไปนี้ใช้เพื่อแสดงกำลังสองที่ไม่ซ้ำกันของตัวเลขโดยใช้วิธีแผนที่
List num = Arrays.asList (5,4,4,2,3,3) List squares = num.stream (). map (y -> y * y) .distinct (). collect (Collectors.toList ())
กรอง
องค์ประกอบสามารถลบออกตามเกณฑ์โดยใช้วิธีนี้
ชื่อรายการ = Arrays.asList ('Saturday', 'Sunday', 'Thursday') รายการ res = name.stream (). filter (s-> s.startsWith ('S')) รวบรวม (Collectors.toList () )
จัดเรียง
สามารถจัดเรียงสตรีมได้โดยใช้วิธีนี้
ชื่อรายการ = Arrays.asList ('Saturday', 'Sunday', 'Thursday') List res = name.stream (). sorted (). collect (Collectors.toList ())
สตรีมใน Java: การทำงานของเทอร์มินัล:
เก็บ
ผลลัพธ์ของการประมวลผลองค์ประกอบของสตรีมสามารถรวมกันได้โดยใช้การดำเนินการรวบรวม
รายการ num = Arrays.asList (4,3,2,5,6) ตั้งค่า res = num.stream () แผนที่ (y-> y * y) .collect (Collectors.toSet ())
แต่ละ
วิธีนี้ใช้สำหรับการวนซ้ำทุกองค์ประกอบที่มีอยู่ในสตรีม
List num = Arrays.asList (4,3,2,5) num.stream (). map (x-> x * x) .forEach (y-> System.out.println (y))
ลด
องค์ประกอบของสตรีมสามารถลดลงเป็นค่าเดียวได้โดยใช้วิธีนี้
รายการ num = Arrays.asList (4,3,2,5) int even = num.stream (). filter (x-> x% 2 == 0) .reduce (0, (res, i) -> res + ผม)
ตัวแปร res ถูกกำหนดค่า 0 ในตอนแรกและฉันจะถูกเพิ่มเข้าไป
ดำเนินการต่อด้วยบทความนี้เกี่ยวกับสตรีมใน Java
การกรอง
โค้ดสามารถกรองได้โดยใช้วิธีการสตรีม ในตัวอย่างต่อไปนี้ราคาของตราสารจะถูกกรองออก
import java.util. * import java.util.stream.Collectors class Instrument {int num String name float price public Instrument (int num, String name, float price) {this.num = num this.name = name this.price = price}} การทดสอบคลาสสาธารณะ {public static void main (String [] args) {List instrumentsList = new ArrayList () // Adding Products instrumentsList.add (new Instrument (1, 'Guitar', 15000f)) instrumentsList.add (new Instrument (2, 'Piano', 18000f)) instrumentsList.add (เครื่องดนตรีใหม่ (3, 'ฟลุต', 15000f)) instrumentsList.add (เครื่องมือใหม่ (4, 'กลอง', 48000f)) instrumentsList.add (เครื่องมือใหม่ ( 5, 'Ukulele', 32000f)) List InstrumentPriceList2 = instrumentsList.stream () .filter (p -> p.price> 30000) // การกรองข้อมูล. map (p-> p.price) // การดึงราคา Collectors.toList ()) // รวบรวมเป็นรายการ System.out.println (InstrumentPriceList2)}}
เอาท์พุต:
[48000.0, 32000.0]
การมีเพศสัมพันธ์ที่แน่นและการมีเพศสัมพันธ์แบบหลวม
ดำเนินการต่อด้วยบทความนี้เกี่ยวกับสตรีมใน Java
การทำซ้ำ:
การทำซ้ำสามารถทำได้โดยใช้สตรีมใน java
import java.util.stream. * public class Test {public static void main (String [] args) {Stream.iterate (1, element-> element + 1) .filter (element-> element% 4 == 0) ขีด จำกัด (6) .forEach (System.out :: println)}}
เอาท์พุต:
4
8
12
16
ยี่สิบ
24
มาดูอีกตัวอย่างหนึ่งเพื่อทำความเข้าใจแนวคิดของ Stream ใน java ได้อย่างมีประสิทธิภาพมากขึ้น
ตัวอย่าง:
import java.util. * import java.util.stream * public class Test {public static void main (String args []) {// การสร้างรายการจำนวนเต็ม List num = Arrays.asList (6,7,8,9 ) // โดยใช้วิธีการแผนที่ List squares = num.stream (). map (y -> y * y) รวบรวม (Collectors.toList ()) System.out.println (สี่เหลี่ยม) // การสร้างรายการ String List days = Arrays.asList ('Friday', 'Saturday', 'Sunday') // วิธีการกรองรายการ res = วัน .stream (). ตัวกรอง (s-> s.startsWith ('S')) รวบรวม (Collectors.toList ()) System.out.println (res) // วิธีการจัดเรียง List display = days.stream (). sorted (). collect (Collectors.toList ()) System.out.println (display) / / การสร้างรายการจำนวนเต็มหมายเลขรายการ = Arrays.asList (6,9,5,7,1) // วิธีการรวบรวมจะส่งกลับชุด Set sqSet = number.stream (). map (y-> y * y) .collect (Collectors.toSet ()) System.out.println (sqSet) // forEach method num.stream (). map (y-> y * y) .forEach (x-> System.out.println (x)) / / ลด method int even = num.stream (). filter (x-> x% 2 == 0) .reduce (0, (result, i) -> result + i) System.out.println (even)}}
เอาท์พุต:
[36, 49, 64, 81]
[เสาร์อาทิตย์]
[วันศุกร์วันเสาร์วันอาทิตย์]
[81, 49, 1, 36, 25]
36
49
64
81
14
สตรีมช่วยให้ผู้ใช้สามารถดำเนินการกับองค์ประกอบได้อย่างมีประสิทธิภาพ
ดังนั้นเราจึงมาถึงตอนท้ายของบทความนี้ใน 'สตรีมใน Java' หากคุณต้องการเรียนรู้เพิ่มเติมโปรดดู Java Training โดย Edureka บริษัท การเรียนรู้ออนไลน์ที่เชื่อถือได้ หลักสูตรการฝึกอบรมและการรับรอง Java J2EE และ SOA ของ Edureka ได้รับการออกแบบมาเพื่อฝึกอบรมคุณสำหรับแนวคิด Java ทั้งหลักและขั้นสูงพร้อมกับกรอบงาน Java ต่างๆเช่น Hibernate & Spring
มีคำถามสำหรับเรา? โปรดระบุไว้ในส่วนความคิดเห็นของบล็อกนี้และเราจะติดต่อกลับโดยเร็วที่สุด