ตัวอย่างของบทความนี้บอกวิธีทั่วไปของรายการรายการใน Java แบ่งปันสำหรับทุกคนสำหรับการอ้างอิงของคุณ การวิเคราะห์เฉพาะมีดังนี้:
ในรายการที่ตรวจพบในฐานข้อมูลฟิลด์ที่แตกต่างกันมักจะถูกเรียงลำดับ หากไม่ได้สอบถามในฐานข้อมูลการเรียงลำดับโดยตรงในรายการแรกที่พบจะปรับปรุงประสิทธิภาพของระบบอย่างไม่ต้องสงสัย
ตราบใดที่ผลลัพธ์ที่ตรวจพบครั้งแรกถูกเก็บไว้ในเซสชันคุณสามารถเรียงลำดับรายการได้ โดยทั่วไปการเรียงลำดับรายการสามารถใช้ใน collections.sort (รายการ) แต่ถ้ารายการมีวัตถุวิธีนี้ยังคงเป็นไปไม่ได้ แล้วคุณจะเรียงลำดับได้อย่างไร? หากมีวัตถุ userInfo มันจะมีฟิลด์ต่อไปนี้:
java.lang.integer ผู้ใช้ userid;
ดังนั้นตอนนี้คุณต้องเรียงลำดับผู้ใช้แล้วคุณสามารถใช้วิธีการต่อไปนี้:
collections.sort (รายการ, ตัวเปรียบเทียบใหม่ () {public int Compare (Object A, Object B) {int one = ((ลำดับ) a) .getUserId (); int two = ((order) b) .getUserId (); ส่งคืนหนึ่งสอง;}});
ด้วยวิธีนี้หากคุณต้องการเรียงลำดับแต่ละฟิลด์ของรายการ userInfo มันเขียนโดยเซ็กเมนต์ดังที่แสดงด้านบนในแต่ละฟิลด์หรือไม่? นั่นไม่ใช่ผลลัพธ์ที่เราต้องการ การเขียนโปรแกรมมีความละเอียดมากขึ้นเรื่อย ๆ และคุณไม่สามารถเขียนซ้ำซ้อนมากขึ้นเรื่อย ๆ คุณสามารถเขียนวิธีการทั่วไปได้หรือไม่? คำตอบคือใช่ แต่ก่อนอื่นเราต้องแก้คำถามสามข้อต่อไปนี้:
1. สามารถใช้ประเภททั่วไป
2. เป็นวิธีการเปรียบเทียบทั่วไปเช่น compareto;
3. มีวิธีการแพนเช่นวิธีการทั่วไปและทั่วไปหรือไม่?
ปัญหาแรกสามารถแก้ไขได้ ปัญหาที่สามไม่มีวิธีการแพนที่เราต้องการ แต่เราสามารถเปลี่ยนและใช้วิธีการ getMethod และเรียกใช้วิธีการแบบไดนามิก รหัสมีดังนี้:
คลาสสาธารณะ sortlist <e> {public void sort (รายการ <e> รายการ, วิธีสตริงสุดท้าย, การเรียงลำดับสตริงสุดท้าย) {collectss.sort (รายการ, ตัวเปรียบเทียบใหม่ () {public int Compare (O. Bky A, Object B) { int = 0; เท่ากับ (เรียงลำดับ) // the enverted (((((((e) b), null) .tring (). compereto (((e) a), null) .tring ()); = m1.invoke ((((e) a), null) .tring (). compereto (m2.invoke ((e) b), null) .tring ();} catch (nosuchmethodexception ne) {system.out println (ne);} catch (unglemalaccessexception ie) {system.out.println (เช่น);
เมื่อดูที่รหัสข้างต้นเราประสบความสำเร็จในการแก้ปัญหาสามข้อข้างต้นและเพิ่มลำดับการกลับหัวกลับหาง ไม่มีวัตถุและประเภทที่เฉพาะเจาะจงในรหัสและมันมีความหลากหลายแล้ว : ตัวอย่างเช่น "ตัวอย่างเช่น" getUserid " คุณสามารถใช้รหัสที่ให้ไว้ด้านล่างเพื่อทดสอบ:
//test.javapackage ทดสอบ; นำเข้า java.util.arraylist; = arrayList ใหม่ <userInfo> (); SimpledateFormat Formater = New SimpledateFormat ("YYYY-MM-DD"); 11); out.println ("------- ลำดับต้นฉบับ ----------------------------------- ----------------------- "" ""); } // เรียกคลาสสากล sortlist <userinfo> sortlist = sortlist ใหม่ <userInfo> (); ------------------------------------ "); สำหรับ (ผู้ใช้ userInfo: รายการ) {System.out.println (user.toString ());} // กดชื่อผู้ใช้ sortlist.sort (รายการ "getusername", null); ------------------------------------------------------ ------------------------------------------------------ --- "););} // sortlist.sort (รายการ," getBithDatestS ", null); system.out.println (" ------------------- ------------- ---------------------- "); สำหรับ (ผู้ใช้ userInfo: รายการ) { System.out.println (user.toString ());}}}
ผลการทดสอบมีดังนี้:
------- ลำดับต้นฉบับ ------------------------------------- ------------------------------------------------------ ------------------------------------------------------ ------------------------------------------------------ -------------------------- 3; 10-01; 3; ---------- 2 ------------------------------------------------------ ------------------------------------------------------ ------------------------------------ 2; -01
หมายเหตุ: การเรียงลำดับของวันที่จะถูกแปลงเป็นครั้งแรกโดยรูปแบบมิฉะนั้นจะไม่มีผลลัพธ์ที่ถูกต้อง
หวังว่าบทความนี้จะเป็นประโยชน์กับการออกแบบโปรแกรม Java ของทุกคน