บทความนี้อธิบายการดำเนินการจัดเรียงอาร์เรย์และการเรียงลำดับการดำเนินการโดย Java แบ่งปันสำหรับการอ้างอิงของคุณดังนี้:
นี่คือการสาธิตการดำเนินการสำรองข้อมูลอาร์เรย์และการเรียงลำดับของ Java
ตัวอย่างซอร์สโค้ดตัวอย่างที่เขียนในบทความขึ้นอยู่กับ JDK1.6+, Junit4.8.2
java.util.Arrays.sort()
รองรับการเรียงลำดับ int[] , long[] , short[] , char[] , byte[] , float[] , double[] , Object[]
ตัวอย่างโค้ดตัวอย่างอ้างอิงมีดังนี้
// ประกาศอาร์เรย์ int และเริ่มต้น int [] intarry = {5,4,7,8,2,0,1,9,3,6,6,10}; // เรียงลำดับอาร์เรย์ int array.sort (intarry);ซอร์สโค้ดคลาสทดสอบ Junit:
แพ็คเกจ com.gjnote.test.array; นำเข้า java.util.array; นำเข้า org.junit.test; testarrayssort ระดับสาธารณะ {// ประกาศอาร์เรย์ int และเริ่มต้น int [] intarry = {5,4,7,8,2,0,0,1,9,3,6,10}; array.sort (intarry); สำหรับ (int i = 0; i <intarry.length; i ++) {system.out.println (intarry [i]);} system.out.println (array.toString (intarry));}}}}เอาต์พุตคอนโซล
0
1
2
3
4
5
6
7
8
9
10
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
java.util.Collections.sort()
การเปรียบเทียบวัตถุนั้นเกิดขึ้นได้โดยการใช้วิธี compare ภายใน
ตัวอย่างโค้ดตัวอย่างมีดังนี้
/*** ใช้ collections.sort (รายการ, comparator () {});*วิธีที่แนะนำสำหรับการเรียงลำดับรายการอาร์เรย์*/โมฆะสาธารณะคอลเลกชันโซร์ทรีเมนต์ 1 (รายการรายการ) {collections.sort (รายการ, ตัวเปรียบเทียบใหม่ () {@overridepublic Int Compare (String O1, String O2) (O2) .Compareto (O1);}});}Java ใช้รายการซ้ำซ้อน
วิธีที่ 1: ใช้สำหรับการสำรวจลูปเพื่อลบองค์ประกอบที่ซ้ำกันในรายการ
ตัวอย่างรหัสมีดังนี้
รายการ templist = new ArrayList (); // ลบองค์ประกอบที่ซ้ำกันออกจากรายการต้นฉบับสำหรับ (สตริงสตริง: originallist) {ถ้า (! templist.contains (สตริง)) {templist.add (สตริง);}}}วิธีที่ 2: ใช้ตั้งค่าเป็น dedUplication
ตัวอย่างรหัสมีดังนี้
// SET ใช้เอกลักษณ์ขององค์ประกอบที่ตั้งไว้และชุดซ้ำชุดใหม่ Set = new HashSet (OriginAllist); list templist = new ArrayList (SET);
วิธีที่ 3: ใช้ Treeet เพื่อลบองค์ประกอบที่ซ้ำกัน
Treeset Treeset = Treeset ใหม่ (Originallist); listTemPlist = new ArrayList (); Templist.addall (Treeset); // treeet การเรียงลำดับเริ่มต้นเป็นคำสั่งเพิ่มขึ้นเพิ่มว่าจำเป็นต้องมีลำดับผกผันตามสถานการณ์จริงหรือไม่ คอลเลคชั่น Reverse (Templist);
Java ใช้การตั้งค่ารายการหลังจากการเรียงลำดับ
junit รายการทดสอบซ้ำซ้อนและการเรียงลำดับแหล่งที่มา
แพ็คเกจ com.gjnote.test.array; นำเข้า java.util.arraylist; นำเข้า java.util.collections; นำเข้า java.util.comparator; นำเข้า java.util.hashset; นำเข้า java.util.list; org.junit.test;/*** คลาสทดสอบ*รายการอาร์เรย์ de-heavy องค์ประกอบเรียงลำดับ ** @version 1.0*@author www.gjnote.com **/คลาสสาธารณะ testlistarraysort {private listoriginallist = null; @beforepublic setup) {Originalist.add ("Element" + i); // เพิ่ม repeet elementif (i % 2 == 0) {originallist.add ("องค์ประกอบ" + i);}}}/*** รายการรายการเอาต์พุต*@param รายการ*/โมฆะส่วนตัว {system.out.println (list.get (i));}}/*** ใช้ collections.sort (list, comparator () {});*วิธีการเรียงลำดับที่แนะนำ*/collectionssortelement ส่วนตัว {// ปรับลำดับของวัตถุเปรียบเทียบตามการเรียงลำดับจริงจะต้องส่งคืน o2.compareto (O1);}}); // outputList (templist); system.out.println ("คอลเลกชัน collections.sort sort*/@testpublic เป็นโมฆะ testforloopremoverepeatelement () {system.out.println ("testforloopremoverepeatelement"); Long start = system.currentTimeMillis (); list templist = new ArrayList (); // ลบองค์ประกอบที่ซ้ำกันสำหรับ (สตริงสตริง: originallist) {ถ้า (! templist.contains (สตริง)) {templist.add (สตริง); Loop to Traverse List และลบองค์ประกอบที่ซ้ำกัน: " + (System.currentTimeMillis () - เริ่มต้น) +" MS ");}/*** ทดสอบเพื่อใช้การตั้งค่าเป็น dedUplication; * ใช้ collections.sort (list, comparator () {}); เรียงลำดับ **/@testpublic void testsetRemoVerePeatelement () {system.out.println ("testsetSetRemoVerePeatelement"); Long Start = System.currentTimeMillis (); // เรียงลำดับก่อน (ค่าทางทฤษฎี: การเรียงลำดับก่อนแล้วการซ้ำซ้อนจะมีประสิทธิภาพมากกว่าการเรียงลำดับในภายหลัง) คอลเลกชันคอลเลกชัน (Originalist); // set ใช้เอกลักษณ์ของชุดการจัดเรียง ลองใช้เวลาทำงาน //collectionsSortelement(Templist);//OutputList(Templist); aystem.out.println("collections.sort, การเรียงลำดับ, ใช้การตั้งค่าที่ซ้ำกัน: " + (system.currentTimeMillis () - เริ่มต้น) +" ms "); TestTreesEtreMoVerePeatelement () {System.out.println ("TestTreesEtreMoverePeatelement"); Long Start = System.currentTimeMillis (); TreeSetTreeset = Treeset ใหม่ (OriginAllist); listTemPlist = new ArrayList (); Templist.addall (Treeset); // treeet การเรียงลำดับเริ่มต้นขึ้นคำสั่งเพิ่มไม่ว่าคุณจะต้องย้อนกลับไปตามสถานการณ์จริง collections.reverse (templist); // outputlist (templist); system.out.println ("เรียงลำดับด้วยชุดต้นไม้, ลบองค์ประกอบที่ซ้ำกัน:" + (system.currenttimeMillis () - เริ่มต้น) + "MS");}@testPublic Void Testmethods () TestsetRemoVerePeatelement (); // 14MstestTreesEtreMoVerePeatelement (); // 20ms // testforloopremoverePeatelement (); // 2525ms}}เรียกใช้คอนโซล testsetSetRemoverePeatelement () เพื่อส่งออกผลลัพธ์
TestsetRemoverePeatelement
collections.sort: 8ms
collections.sort sort, ใช้ Set to deduplicate: 14ms
เรียกใช้คอนโซล testTreesTremoverePeatelement () เพื่อส่งออกผลลัพธ์
TestTreesEtreMoverePeatelement
เรียงลำดับด้วยชุดต้นไม้ลบองค์ประกอบที่ซ้ำกัน: 20ms
เรียกใช้คอนโซล testforloopremoverepeatelement () เพื่อส่งออกผลลัพธ์
testforloopremoverepeatelement
collections.sort: 7ms
ใช้ A for loop to traverse remove องค์ประกอบที่ซ้ำกัน: 2525ms
PS: นี่คือเครื่องมือที่เกี่ยวข้องสำหรับการอ้างอิงของคุณ:
เครื่องมือกำจัดออนไลน์:
http://tools.vevb.com/code/quchong
เครื่องมือการทำซ้ำข้อความออนไลน์:
http://tools.vevb.com/aideddesign/txt_quchong
การสาธิตแอนิเมชั่นออนไลน์แทรก/เลือก/ฟอง/ผสาน/ฮิลล์/อัลกอริทึมการเรียงลำดับอย่างรวดเร็วเครื่องมือกระบวนการ:
http://tools.vevb.com/aideddesign/paixu_ys
สำหรับข้อมูลเพิ่มเติมเกี่ยวกับอัลกอริทึม Java ผู้อ่านที่มีความสนใจในเว็บไซต์นี้สามารถดูหัวข้อ: "โครงสร้างข้อมูล Java และการสอนอัลกอริทึม", "บทสรุปของเคล็ดลับการดำเนินงาน Java Dom", "บทสรุปของไฟล์ Java และเคล็ดลับการดำเนินการไดเรกทอรี" และ "สรุป
ฉันหวังว่าบทความนี้จะเป็นประโยชน์กับการเขียนโปรแกรม Java ของทุกคน