ใน Java อาจมีบางกรณีที่โปรแกรมเมอร์จำเป็นต้องจัดเรียงรายการตามข้อกำหนด ตัวอย่างเช่น การดึงค่าที่ไม่เรียงลำดับหรือสร้างขึ้นแบบสุ่มในลักษณะเฉพาะ (จากน้อยไปหามากหรือมากไปหาน้อย) ในสถานการณ์ดังกล่าว “ Stream.sorted() ” วิธีการช่วยจัดเรียงข้อมูลอย่างมีประสิทธิภาพที่ส่วนท้ายของผู้พัฒนา
บทความนี้จะกล่าวถึงรายละเอียดเกี่ยวกับการใช้และการปรับใช้เมธอด “Stream.sorted()” ใน Java
วิธีการ “Stream.sorted()” ใน Java คืออะไร
“ Stream.sorted() ” วิธีการสอดคล้องกับ “ ลำธาร ' อินเตอร์เฟซ. วิธีการนี้ให้สตรีมที่เรียงลำดับโดยไม่ส่งผลกระทบต่อการสั่งซื้อองค์ประกอบ/รายการในสตรีมดั้งเดิม
ไวยากรณ์
กรณีที่ 1: ไม่มีพารามิเตอร์
stream.sorted ( )
กรณีที่ 2: ด้วยพารามิเตอร์
stream.sorted ( คอมพ์ )
ในไวยากรณ์นี้ “ คอมพ์ ” หมายถึงตัวเปรียบเทียบที่จะทำการเรียงลำดับ
ก่อนดำเนินการตามตัวอย่าง ตรวจสอบให้แน่ใจว่าได้รวมแพ็คเกจต่อไปนี้ แพ็คเกจนี้ประกอบด้วยคลาส อินเทอร์เฟซ ฯลฯ เพื่ออนุญาตให้ดำเนินการในลักษณะการทำงานกับองค์ประกอบ:
นำเข้า java.util.stream * ;
ตัวอย่างที่ 1: การใช้เมธอด “Stream.sorted()” เพื่อจัดเรียง (จากน้อยไปหามาก) จำนวนเต็มใน Java
“ Stream.of() ” วิธีการใช้เพื่อสร้างกระแสลำดับสำหรับองค์ประกอบที่กำหนด ในตัวอย่างนี้ สามารถใช้วิธีนี้รวมกับ “ Stream.sorted() ” วิธีการจัดเรียงกระแสจำนวนเต็มในลักษณะจากน้อยไปหามาก:
จัดเรียงชั้นเรียนสาธารณะ {โมฆะสาธารณะคงหลัก ( สตริง [ ] หาเรื่อง ) {
ลำธาร < จำนวนเต็ม > sortStream1 = Stream.of ( 2 , 4 , 3 , 5 , 1 ) ;
ลำธาร < จำนวนเต็ม > sortStream2 = Stream.of ( 9 , 6 , 7 , 8 , 10 ) ;
System.out.println ( 'สตรีมแรกคือ: ' ) ;
sortStream1.เรียงลำดับ ( ) .แต่ละ ( System.out::println ) ;
System.out.println ( ' \n สตรีมที่สองคือ: ' ) ;
sortStream2.sorted ( ( ก ข ) - > ปริญญาตรี ) .แต่ละ ( System.out::println ) ;
} }
ในข้อมูลโค้ดนี้:
- สร้างกระแสข้อมูลจำนวนเต็มที่แตกต่างกันสองกระแสผ่านทาง “ ของ() ' วิธี.
- หลังจากนั้นเชื่อมโยง “ เรียงลำดับ () ” วิธีการกับสตรีมเดิมที่สร้างขึ้นเพื่อจัดเรียงสตรีมใน “ จากน้อยไปมาก ' คำสั่ง.
- ตอนนี้ ใช้ “ เรียงลำดับ () ” วิธีการอีกครั้งกับสตรีมหลังเพื่อส่งคืนสตรีมใน “ จากมากไปน้อย ” เรียงลำดับตามตัวเปรียบเทียบที่กำหนด เช่น “ ปริญญาตรี '.
- สุดท้าย แสดงสตรีมจำนวนเต็มที่เรียงลำดับในทั้งสองกรณีบนคอนโซล
เอาต์พุต
ในเอาต์พุตนี้ สังเกตได้ว่าทั้งสองสตรีมจะถูกจัดเรียงตามนั้น
ก่อนไปที่ตัวอย่างถัดไป ให้รวมตัวอย่างด้านล่างเพื่อเข้าถึงคลาสและเมธอดทั้งหมด:
นำเข้า java.util * ;
ตัวอย่างที่ 2: การใช้เมธอด “Stream.sorted()” เพื่อจัดเรียงคลาสอ็อบเจกต์
ในตัวอย่างนี้ วิธีการที่กล่าวถึงสามารถนำไปใช้กับวัตถุคลาสเพื่อเรียงลำดับค่าที่ส่งผ่าน:
ข้อมูลคลาส {นานาชาติ รหัส ;
ชื่อสตริง;
ข้อมูล ( นานาชาติ รหัส ,ชื่อสตริง ) {
this.id = รหัส ;
this.name = ชื่อ;
}
สตริงสาธารณะ toString ( ) {
กลับ 'id=' + this.id
+ ', ชื่อ=' + ชื่อนี้;
} }
คลาสสตรีมเรียง {
โมฆะสาธารณะคงหลัก ( สตริง [ ] หาเรื่อง ) {
รายการ < ข้อมูล > รายการ = ArrayList ใหม่ < ข้อมูล > ( ) ;
รายการ.เพิ่ม ( ข้อมูลใหม่ ( 2 , 'แฮร์รี่' ) ) ;
รายการ.เพิ่ม ( ข้อมูลใหม่ ( 1 , 'เดวิด' ) ) ;
รายการ.เพิ่ม ( ข้อมูลใหม่ ( 3 , 'ทอม' ) ) ;
ลำธาร < ข้อมูล > stream = list.สตรีม ( ) ;
stream.sorted ( ( e1, e2 ) - > e1.id - e2.id ) .แต่ละ ( System.out::println ) ;
} }
ในโค้ดบรรทัดเหล่านี้ ให้ทำตามขั้นตอนต่อไปนี้:
- ประการแรก ประกาศคลาสชื่อ “ ข้อมูล '.
- ในคำจำกัดความ ให้ระบุตัวแปรที่ระบุ
- ในขั้นตอนถัดไป รวมตัวสร้างคลาสแบบกำหนดพารามิเตอร์ที่มีพารามิเตอร์เหมือนกับตัวแปรที่ระบุ
- ในนิยามคอนสตรัคเตอร์ ให้อ้างถึงตัวแปรที่ระบุ และจัดสรรค่าอาร์กิวเมนต์ที่ส่งผ่านผ่าน “ นี้ '.
- ตอนนี้แทนที่ ' toString() ” วิธีการคืนค่าที่ผ่านไป
- ใน ' หลัก() ” วิธีการ สร้างรายการของคลาสวัตถุและเพิ่มค่าผ่านที่ระบุไว้ในรายการผ่านทางที่เกี่ยวข้อง “ เพิ่ม() ' วิธี.
- หลังจากนั้นดึงสตรีมจากรายการผ่าน “ ลำธาร() ' วิธี.
- นอกจากนี้ ให้ใช้ “ เรียงลำดับ () ” วิธีการกับตัวเปรียบเทียบที่ระบุซึ่งเปรียบเทียบสองวัตถุตาม “ รหัส ” ใน “ จากน้อยไปมาก ' มารยาท.
- สุดท้าย ใช้ “ แต่ละ() ” วิธีการบันทึกสตรีมวัตถุที่เรียงลำดับบนคอนโซล
เอาต์พุต
จากผลลัพธ์นี้สามารถวิเคราะห์ได้ว่ามีการเรียงลำดับค่าวัตถุอย่างเหมาะสม
บทสรุป
“ Stream.sorted() ” เป็นวิธีการที่สอดคล้องกับ “ ลำธาร ” อินเตอร์เฟสที่ให้สตรีมที่เรียงลำดับโดยไม่ส่งผลกระทบต่อรายการ/องค์ประกอบที่สั่งซื้อในสตรีมดั้งเดิม วิธีนี้จัดเรียงองค์ประกอบด้วยวิธีเริ่มต้นและตามตัวเปรียบเทียบที่ระบุ บล็อกนี้กล่าวถึงการใช้และการปรับใช้เมธอด “Stream.sorted()” ใน Java