ชั้นของ Treeer ที่เป็นพื้นฐานคือ Keyset ของ Treemap () และ TreeMap ถูกนำไปใช้ตามต้นไม้สีแดงและสีดำ ต้นไม้สีแดงและสีดำเป็นต้นไม้ค้นหาไบนารีที่สมดุลซึ่งสามารถมั่นใจได้ว่าความแตกต่างของความสูงระหว่างทรีทรีซ้ายและขวาของโหนดใด ๆ จะไม่เกินสองเท่าของต้นไม้ที่สั้นกว่า
Treemap ถูกจัดเรียงตามคีย์ดังนั้นองค์ประกอบในชุดต้นไม้จะถูกจัดเรียง เห็นได้ชัดว่าวิธีการเปรียบเทียบ () จะต้องเรียกเมื่อองค์ประกอบถูกแทรกลงในชุดต้นไม้ดังนั้นองค์ประกอบในชุดต้นไม้จะต้องใช้อินเทอร์เฟซที่เปรียบเทียบได้ Treeset เป็นชุดมันไม่อนุญาตให้องค์ประกอบที่ซ้ำกันปรากฏขึ้น Treeset ใช้ compereto () เพื่อตัดสินองค์ประกอบที่ซ้ำกันไม่เท่ากับ () ดูรหัสต่อไปนี้
นำเข้า java.util.Treeset; นำเข้า org.junit.test; Public Class TestTreeset {คลาสรวมการดำเนินการเทียบเท่า <รวม> {ส่วนตัว int p1; int ส่วนตัว p2; รวมการรวม (int p1, int p2) {this.p1 = p1; บูลีนเท่ากับ (Object obj) {system.out.print ("ไม่ว่าจะเท่าเทียมกัน" + this + "และ" + obj); boolean rect = false; ถ้า (obj instanceof รวมกัน) {system.out.println ("ไม่ว่าจะเท่าเทียมกัน" + "และ" + obj); other.getP2 ());} system.out.println (":" + rect); return rect;}@แทนที่สาธารณะ int compereto (รวม o) {system.out.print ("เปรียบเทียบ" + this + "และ" + o); (this.p1> o.p1) {system.out.println (", return 1"); return 1;} else {system.out.println (", return 0"); return 0;}}@override public String toString () {return "(" + p1 + "," p2 + ") p1) {this.p1 = p1;} public int getp2 () {return p2;} โมฆะสาธารณะ setp2 (int p2) {this.p2 = p2;}}@ทดสอบโมฆะสาธารณะ () {combine c1 = new combine (1, 2); 2); treeet <รวม> set = new Treeset <รวม> (); set.add (c1); set.add (c2); set.add (c3); set.add (c4); ในขณะที่ (! set.isempty ()) {// ส่งออกองค์ประกอบในชุดต้นไม้ตามลำดับรวม combine = set.pollfirst (); system.out.println (combine.getp1 () + "/t" + combine.getp2 ());}}}}}}เอาท์พุท:
เปรียบเทียบ (1,2) และ (1,2), return 0
เปรียบเทียบ (1,2) และ (1,2), return 0
เปรียบเทียบ (1,3) และ (1,2), return 0
เปรียบเทียบ (5,2) และ (1,2), return 1
1 2
5 2
เราเห็นว่าไม่ว่าจะเป็นแบบเปรียบเทียบ () ที่จะส่งกลับหรือไม่ก็ตามวิธี Equals () จะไม่ถูกเรียก
สรุป
ข้างต้นเป็นเรื่องเกี่ยวกับการวิเคราะห์องค์ประกอบซ้ำ ๆ และตัวอย่างรหัส ฉันหวังว่ามันจะเป็นประโยชน์กับทุกคน เพื่อนที่สนใจสามารถอ้างถึงหัวข้ออื่น ๆ ที่เกี่ยวข้องในเว็บไซต์นี้ต่อไป หากมีข้อบกพร่องใด ๆ โปรดฝากข้อความไว้เพื่อชี้ให้เห็น ขอบคุณเพื่อนที่ให้การสนับสนุนเว็บไซต์นี้!