วิธีใช้โครงสร้างข้อมูล Java TreeMap

วิธีใช้โครงสร้างข้อมูล Java TreeMap

คลาส Java TreeMap เก็บข้อมูลในโครงสร้างแบบต้นไม้โดยใช้อินเทอร์เฟซแผนที่ คลาสนี้ขยายคลาส AbstractMap และเช่นเดียวกับคลาสพาเรนต์ TreeMap มีพารามิเตอร์สองประเภท พารามิเตอร์ประเภทหนึ่งแสดงถึงคีย์ใน TreeMap ในขณะที่อีกพารามิเตอร์หนึ่งแสดงถึงค่า





โครงสร้างข้อมูล TreeMap เก็บคู่คีย์-ค่า และอนุญาตให้คุณดำเนินการ CRUD กับข้อมูลนี้ได้





วิธีสร้าง TreeMap ใน Java

คลาส TreeMap มีตัวสร้างสี่ตัวที่คุณสามารถใช้เพื่อสร้างวัตถุ TreeMap ใหม่ ตัวสร้างเริ่มต้นเป็นที่นิยมมากที่สุดในสี่ตัว ตัวสร้างนี้ไม่มีอาร์กิวเมนต์และสร้างแผนผังต้นไม้ที่ว่างเปล่า





// Create a new tree map 
TreeMap<Integer,String> customers = new TreeMap<Integer,String>();

รหัสด้านบนสร้างแผนผังต้นไม้ว่างที่เรียกว่า ลูกค้า .

การเติมโครงสร้างข้อมูล TreeMap

ดิ ใส่() วิธีการเพิ่มรายการไปยังวัตถุ TreeMap ต้องใช้สองอาร์กิวเมนต์—คีย์และค่าของมัน คุณสามารถเพิ่มรายการลงในแผนผังต้นไม้ในลำดับแบบสุ่มใดก็ได้ และโครงสร้างข้อมูลจะจัดเก็บรายการดังกล่าวในลำดับจากน้อยไปมากตามคีย์ของรายการ



// Populate a tree map 
customers.put(105, "Jessica Jones");
customers.put(102, "Mark Williams");
customers.put(104, "Phil Blair");
customers.put(101, "Kim Brown");
customers.put(103, "Jim Riley");

รหัสด้านบนจะเพิ่มลูกค้าห้ารายในลำดับแบบสุ่มในแผนผังโครงสร้างลูกค้า

การดูรายการใน TreeMap

คลาส TreeMap เก็บข้อมูลในวัตถุ ดังนั้น หากต้องการดูรายการทั้งหมดในแผนผังต้นไม้ คุณสามารถพิมพ์วัตถุแผนผังต้นไม้ไปยังคอนโซลได้:





// View all tree map items as an object 
System.out.println(customers);

รหัสด้านบนพิมพ์ผลลัพธ์ต่อไปนี้ไปยังคอนโซล:

{101=Kim Brown, 102=Mark Williams, 103=Jim Riley, 104=Phil Blair, 105=Jessica Jones}

โปรดทราบว่าวัตถุด้านบนแสดงรายการในลำดับจากน้อยไปมาก คุณยังสามารถดูแต่ละรายการและคีย์ที่เกี่ยวข้องได้โดยใช้ Java สำหรับลูป .





ขนาดหน่วยความจำเสมือน windows 10 ที่แนะนำ
// View all items with an iterator 
for (Entry<Integer, String> customer : customers.entrySet()) {
System.out.println("Key: " + customer.getKey() + " Value: " + customer.getValue());
}

รหัสด้านบนพิมพ์ผลลัพธ์ต่อไปนี้ไปยังคอนโซล:

Key: 101 Value: Kim Brown 
Key: 102 Value: Mark Williams
Key: 103 Value: Jim Riley
Key: 104 Value: Phil Blair
Key: 105 Value: Jessica Jones

การอัปเดตรายการใน TreeMap

คลาส TreeMap อนุญาตให้คุณอัปเดตรายการที่มีอยู่โดยใช้ แทนที่() กระบวนการ. มีสองวิธีในการแทนที่ วิธีแรกใช้คีย์ที่มีอยู่และค่าใหม่ที่คุณต้องการจับคู่คีย์ที่มีอยู่

// Replace existing value 
customers.replace(101,"Kim Smith");
System.out.println(customers);

รหัสด้านบนพิมพ์วัตถุต่อไปนี้ในคอนโซล:

{101=Kim Smith, 102=Mark Williams, 103=Jim Riley, 104=Phil Blair, 105=Jessica Jones}

อย่างที่เห็น คิม บราวน์ ตอนนี้ คิม สมิธ . วิธีแทนที่ที่สอง () ใช้คีย์ที่มีอยู่ ค่าปัจจุบันของคีย์ และค่าใหม่ที่คุณต้องการจับคู่กับคีย์

// Replace existing value 
customers.replace(103,"Jim Riley", "Michelle Noah");
System.out.println(customers);

รหัสด้านบนพิมพ์วัตถุต่อไปนี้ในคอนโซล:

{101=Kim Brown, 102=Mark Williams, 103=Michelle Noah, 104=Phil Blair, 105=Jessica Jones}

ในวัตถุด้านบน มิเชล โนอาห์ แทนที่ จิม ไรลีย์ .

การลบรายการออกจาก TreeMap

หากคุณต้องการลบรายการเดียวออกจากแผนผังต้นไม้ ให้ ลบ() วิธีการคือทางเลือกเดียวของคุณ ใช้คีย์ที่เกี่ยวข้องกับรายการที่คุณต้องการลบและส่งกลับค่าที่ถูกลบ

// Remove an item 
customers.remove(104);
System.out.println(customers);

การรันโค้ดด้านบนจะพิมพ์วัตถุต่อไปนี้ไปที่คอนโซล:

{101=Kim Smith, 102=Mark Williams, 103=Michelle Noah, 105=Jessica Jones}

นี้ Java Class มี แจ่มใส() วิธีที่ให้คุณลบรายการทั้งหมดในแผนผังต้นไม้

TreeMap กับ HashMap Java Class

TreeMap และ HashMap เป็นคลาสแผนที่ Java ยอดนิยมสองคลาส พวกเขาทั้งคู่ขยายคลาส AbstractMap ความสัมพันธ์นี้ทำให้คลาส TreeMap และ HashMap เข้าถึงฟังก์ชันเดียวกันได้มากมาย

อย่างไรก็ตาม มีความแตกต่างที่น่าสังเกตระหว่างคลาสแผนที่ทั้งสองนี้ TreeMap ใช้โครงสร้างต้นไม้สีแดง-ดำของอินเทอร์เฟซแผนที่ ในขณะที่ HashMap ใช้ตารางแฮช HashMap อนุญาตให้คุณเก็บคีย์ null เดียว ในขณะที่ TreeMap ไม่เก็บ สุดท้าย HashMap นั้นเร็วกว่า TreeMap ความเร็วอัลกอริธึมของอดีตคือ O(1) ในขณะที่ความเร็วของอัลกอริธึมของอดีตคือ O(log(n))