Java:
การใช้แอเรย์สมาชิก

วิธีการ:

Java ไม่มี associative arrays ที่มาพร้อมกับภาษาอย่างที่บางภาษาทำ, แต่มันมี Map interface และคลาสเช่น HashMap และ TreeMap เพื่อมาใช้งานแทน นี่คือวิธีใช้ HashMap:

import java.util.HashMap;
import java.util.Map;

public class LearnMaps {
    public static void main(String[] args) {
        // การสร้าง HashMap
        Map<String, Integer> ageOfFriends = new HashMap<>();
        
        // การเพิ่มสมาชิก
        ageOfFriends.put("Alice", 24);
        ageOfFriends.put("Bob", 30);
        ageOfFriends.put("Charlie", 28);

        // การเข้าถึงสมาชิก
        System.out.println("อายุของ Alice: " + ageOfFriends.get("Alice"));
        
        // การจัดการกับคีย์ที่ไม่มีอยู่
        System.out.println("อายุของคนที่ไม่อยู่ใน map: " + ageOfFriends.getOrDefault("Dan", -1));

        // การวนซ้ำผ่านสมาชิก
        for (Map.Entry<String, Integer> entry : ageOfFriends.entrySet()) {
            System.out.println(entry.getKey() + " อายุ " + entry.getValue() + " ปี");
        }
    }
}

ผลลัพธ์ตัวอย่าง:

อายุของ Alice: 24
อายุของคนที่ไม่อยู่ใน map: -1
Alice อายุ 24 ปี
Bob อายุ 30 ปี
Charlie อายุ 28 ปี

HashMap เป็นเพียงหนึ่งในการใช้งาน ถ้าคีย์ของคุณเป็นเอกลักษณ์และคุณต้องการให้มีการเรียงลำดับ, ลองพิจารณา TreeMap สำหรับ map ที่รักษาลำดับของการใส่, LinkedHashMap เป็นตัวเลือกที่ดีสำหรับคุณ

การศึกษาลึก

Maps ใน Java เป็นส่วนหนึ่งของ Collections Framework ที่ได้รับการแนะนำใน JDK 1.2, แต่ได้รับการปรับปรุงอย่างมากเมื่อเวลาผ่านไป รวมถึงการนำเสนอวิธีการ forEach ใน Java 8 เพื่อการวนซ้ำผ่านรายการได้ง่ายขึ้น การเลือกการใช้งาน map (เช่น HashMap, LinkedHashMap, TreeMap) ควรถูกกำหนดโดยความต้องการที่เฉพาะเจาะจงของคุณในแง่ของการเรียงลำดับและประสิทธิภาพ ตัวอย่างเช่น, HashMap เสนอการทำงานในเวลา O(1) สำหรับการดำเนินการพื้นฐาน (get และ put), โดยสมมติว่าฟังก์ชันแฮชกระจายสมาชิกได้อย่างเหมาะสมในถัง อย่างไรก็ตาม, ถ้าคุณต้องการการเรียงลำดับตามลำดับธรรมชาติหรือตัวเปรียบเทียบที่กำหนดเอง, TreeMap คือตัวเลือกที่ไป โดยเสนอเวลาสำหรับการแทรกและค้นหาใน O(log n)

ก่อนที่ Map จะถูกนำเสนอ, associative arrays มักจะถูกระบุด้วยอาร์เรย์ขนานสองอาร์เรย์ (หนึ่งสำหรับคีย์, อีกหนึ่งสำหรับค่า) หรือโครงสร้างข้อมูลที่กำหนดเองที่มีความมีประสิทธิภาพน้อยกว่า ตัวเลือกอื่นที่เป็นไปได้สำหรับ Map และการใช้งานของมันอาจรวมถึงไลบรารีของบุคคลที่สามที่เสนอ maps พิเศษ เช่น bidirectional maps (BiMap ในไลบรารี Guava ของ Google) สำหรับกรณีที่คุณต้องการค้นหาคีย์โดยค่าได้อย่างมีประสิทธิภาพ อย่างไรก็ตาม, สำหรับกรณีการใช้งานส่วนใหญ่ใน Java, maps ของไลบรารีมาตรฐานมีความแข็งแรงและยืดหยุ่นพอที่จะจัดการงานได้