จาก
post การพูดคุยเรื่องทำการกรองและเรียงลำดับข้อมูลใน List กันอย่างไร ?
ใน Facebook group ของ
Thailand Android Developer
ซึ่งมีความน่าสนใจมาก ๆ
จึงมาลองฝึกเขียนตามคำแนะนำใน comment กันหน่อย
โดยจะเป็นภาษา Java และ Kotlin ซึ่งมีวิธีการแก้ไขดังนี้
- เขียนด้วยภาษา Java ทั่วไป
- เขียนด้วย Java 8 Lambda
- เขียนด้วยการนำ Google Guava มาช่วย
- เขียนด้วยการนำ RxJava มาช่วย
- เขียนด้วยภาษา Kotlin
มาเขียน code กัน ที่สำคัญมี test นะเออ
วิธีการที่ 1 เขียนด้วย Java ปกติ
ในการกรองข้อมูลก็วน loop กันไป
ในการเรียงข้อมูลก็สร้าง class ที่ implement interface Comparator ไปตามระเบียบ
[gist id="9d1c81e7a4a9da73662f0feec236150b" file="1.java"]
วิธีการที่ 2 เขียนด้วย Java 8 Lambda
เอา code มาจากใน comment ของ post ข้างต้นนั่นแหละ
เป็นการใช้
Stream API นั่นเอง
[gist id="9d1c81e7a4a9da73662f0feec236150b" file="2.java"]
ก็นำเอาความสามารถของ Java8 Lamba มาใช้ด้วย
[gist id="9d1c81e7a4a9da73662f0feec236150b" file="3.java"]
วิธีการที่ 4 ใช้ RxJava
อาจจะดูแปลกตาขึ้นมาอีก แต่ว่าได้รับความนิยมเยอะนะ
[gist id="9d1c81e7a4a9da73662f0feec236150b" file="4.java"]
สามารถเขียน test เพื่อทดสอบได้ดังนี้
[gist id="9d1c81e7a4a9da73662f0feec236150b" file="alltest.java"]
ได้ผลการทดสอบผ่าน JUnit ดังนี้
[code]
<testcase classname="kata.SimpleTest" name="withSimpleSolution" time="0.014"/>
<testcase classname="kata.SimpleTest" name="withGuavaSolution" time="0.049"/>
<testcase classname="kata.SimpleTest" name="withRxJavaSolution" time="0.038"/>
<testcase classname="kata.SimpleTest" name="withJava8Solution" time="0.01"/>
[/code]
ตัวอย่าง source code อยู่ที่
Github::Up1::Java Filter and Sort
ปิดท้ายด้วยภาษา Kotlin กันหน่อย ทำไมมันสั้นจังนะ
[gist id="9d1c81e7a4a9da73662f0feec236150b" file="5.kt"]
จบแล้วก็ได้ฝึกเขียน code กันอีกเรื่องแล้ว
ซึ่งแน่นอนว่ายังมีวิธีการอื่น ๆ ที่ดีอีกมากมาย
ใครมีคำแนะนำดี ๆ บอกกันได้นะครับ