Quantcast
Channel: cc :: somkiat
Viewing all articles
Browse latest Browse all 1997

Kata Java :: ฝึกกรองและเรียงลำดับข้อมูลใน List

$
0
0

จาก post การพูดคุยเรื่องทำการกรองและเรียงลำดับข้อมูลใน List กันอย่างไร ? ใน Facebook group ของ Thailand Android Developer ซึ่งมีความน่าสนใจมาก ๆ จึงมาลองฝึกเขียนตามคำแนะนำใน comment กันหน่อย โดยจะเป็นภาษา Java และ Kotlin ซึ่งมีวิธีการแก้ไขดังนี้
  1. เขียนด้วยภาษา Java ทั่วไป
  2. เขียนด้วย Java 8 Lambda
  3. เขียนด้วยการนำ Google Guava มาช่วย
  4. เขียนด้วยการนำ RxJava มาช่วย
  5. เขียนด้วยภาษา 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"]

วิธีการที่ 3 ใช้ Google Guava

ก็นำเอาความสามารถของ 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 กันอีกเรื่องแล้ว ซึ่งแน่นอนว่ายังมีวิธีการอื่น ๆ ที่ดีอีกมากมาย ใครมีคำแนะนำดี ๆ บอกกันได้นะครับ

Viewing all articles
Browse latest Browse all 1997

Trending Articles