25.10.2021

ดาวน์โหลดฟรี Mobile Yandex.Maps สำหรับ Java แอปพลิเคชัน Java แผนที่สำหรับโทรศัพท์มือถือ ดาวน์โหลดแผนที่ออฟไลน์สำหรับ Yandex navigator Java



โปรแกรมสำหรับสมาร์ทโฟนและโทรศัพท์ที่มี GPS ในตัว บริการ Yandex ใหม่ที่ให้คุณสำรวจเมืองโดยใช้โทรศัพท์ของคุณ แผนที่สำหรับโทรศัพท์มือถือมีฟังก์ชันเหมือนกับ Yandex.Maps ปกติ คุณสามารถค้นหาบ้าน ถนน และวัตถุอื่นๆ ดูภาพดาวเทียม ค้นหาข้อมูลเกี่ยวกับการจราจรติดขัด นอกจากนี้ คุณสามารถกำหนดตำแหน่งและทิศทางการเคลื่อนไหวของคุณได้ (ถ้าคุณมีเครื่องรับ GPS) ในการทำงานกับการ์ดมือถือ คุณต้องดาวน์โหลดแอปพลิเคชั่นและติดตั้งบนโทรศัพท์ของคุณที่เชื่อมต่อกับอินเทอร์เน็ต (GPRS)

แผนที่ยานเดกซ์- โปรแกรมสำหรับการนำทางด้วย GPS โดยใช้บริการชื่อเดียวกันจาก Yandex คุณไม่จำเป็นต้องกังวลเกี่ยวกับความพร้อมใช้งานของแผนที่ที่จำเป็น Yandex.Maps จะโหลดโดยอัตโนมัติสำหรับพื้นที่ที่ต้องการ โปรแกรมจะแจ้งให้คุณทราบเกี่ยวกับรถติด สถานที่เกิดอุบัติเหตุ และยังช่วยคุณค้นหาสถาบันและองค์กรต่างๆ ในพื้นที่ที่คุณต้องการ

จำเป็นต้องมีการเชื่อมต่อ GPRS ที่เชื่อมต่อเพื่อให้โปรแกรมทำงานได้!

คุณสมบัติหลักของ Yandex.Maps

แสดงตำแหน่งและทิศทางการเดินทางของคุณ (หากมีเครื่องรับ GPS)
สร้างเส้นทางที่เหมาะสมที่สุดในมอสโกและภูมิภาคมอสโกโดยคำนึงถึงการจราจรติดขัด
แผนที่โดยละเอียดของเมืองมากกว่า 130 แห่งในรัสเซีย ยูเครน และประเทศอื่นๆ พร้อมถนนและบ้านเลขที่
ความสามารถในการดูภาพดาวเทียมของพื้นที่
ให้ข้อมูลเกี่ยวกับการจราจรติดขัด
สามารถระบุตำแหน่งโดยประมาณได้โดยใช้สถานีผู้ให้บริการโทรศัพท์มือถือหรือฮอตสปอต Wi-Fi รอบตัวคุณ
แสดงตำแหน่งการติดตั้งกล้องตำรวจจราจร งานถนน อุบัติเหตุบนท้องถนน และจุดอื่นๆ ที่เป็นประโยชน์สำหรับผู้ขับขี่
ด้วย Yandex.Maps คุณสามารถค้นหาร้านกาแฟ ธนาคาร โรงแรม ร้านกาแฟ ร้านอาหาร และองค์กรอื่นๆ ได้อย่างง่ายดายในสถานที่ที่เหมาะสม
เป็นไปได้ที่จะบันทึกเส้นทางสามารถอัปโหลดแทร็กที่บันทึกไว้ไปยังบริการ Yandex.Maps
คุณสามารถมีส่วนร่วมในการสร้างแผนที่ถนนร่วมกับผู้ใช้รายอื่น คุณสามารถรายงานสถานที่เกิดอุบัติเหตุ ปัญหาบนท้องถนนโดยการเพิ่มป้ายชื่อลงในแผนที่
การมีโหมดการทำงาน "กลางคืน" ในช่วงเวลามืดของวัน
ความสามารถในการเปลี่ยนเป็นโหมดเต็มหน้าจอ
ทำงานแบบออฟไลน์โดยไม่ต้องเข้าถึงเครือข่าย

Yandex.Traffic

พื้นที่สีเหลืองและสีแดงแสดงการจราจรติดขัดและความแออัด โดยที่ความเร็วเฉลี่ยของรถน้อยกว่า 20 กม./ชม. พื้นที่สีเขียว - พื้นที่ปลอดรถที่รถยนต์เคลื่อนที่ด้วยความเร็วเฉลี่ย 30-40 กม./ชม. ยิ่งมีผู้เข้าร่วมในระบบมากเท่าไร ข้อมูลที่ได้รับก็จะยิ่งแม่นยำมากขึ้นเท่านั้น และทุกคนสามารถทิ้งรอยไว้บนแผนที่ได้

ทำงานในกรณีที่ไม่มีการเข้าถึงอินเทอร์เน็ต

ตรวจสอบให้แน่ใจว่าแอปพลิเคชันมีสิทธิ์ในการอ่าน / เขียนจากดิสก์และเปิดใช้งานการแคชการ์ดในการตั้งค่า
ดาวน์โหลดไฟล์เก็บถาวรพร้อมแผนที่ของภูมิภาคที่ต้องการ
ค้นหาโฟลเดอร์ / default ในไฟล์เก็บถาวร
ย้ายเนื้อหาของโฟลเดอร์ / default ไปยังโฟลเดอร์ / yandexmaps / (รหัสภาษา) บนอุปกรณ์มือถือ (เช่น / yandexmaps / ru-RU หรือ / yandexmaps / uk-UA ขึ้นอยู่กับภาษาที่ระบุในการตั้งค่า)
บริการนี้สร้างขึ้นในลักษณะที่ผู้ใช้ให้ข้อมูลเกี่ยวกับการจราจรติดขัด ติดตั้ง Yandex.Maps เปิดใช้งานตัวเลือก "รายงานการจราจรติดขัด" และคุณเป็นสมาชิกเต็มรูปแบบของบริการ พิกัดของอุปกรณ์ของคุณจะถูกส่งไปยังเซิร์ฟเวอร์ทุก ๆ สองนาที ซึ่งจะถูกวิเคราะห์ และอ้างอิงจากข้อมูลจากผู้เข้าร่วมจำนวนมาก ระบบจะสร้างแผนงาน

พื้นที่สีเหลืองและสีแดงแสดงการจราจรติดขัดและความแออัด โดยที่ความเร็วเฉลี่ยของรถน้อยกว่า 20 กม./ชม. พื้นที่สีเขียว - พื้นที่ปลอดรถที่รถยนต์เคลื่อนที่ด้วยความเร็วเฉลี่ย 30-40 กม./ชม. ยิ่งมีผู้เข้าร่วมในระบบมากเท่าใด ข้อมูลที่ได้รับก็จะยิ่งแม่นยำมากขึ้นเท่านั้น และทุกคนสามารถทิ้งรอยไว้บนแผนที่ได้

ดาวน์โหลด:


แผนที่ยานเดกซ์- โปรแกรมสำหรับการนำทางด้วย GPS โดยใช้บริการชื่อเดียวกันจาก Yandex คุณไม่จำเป็นต้องกังวลเกี่ยวกับความพร้อมใช้งานของแผนที่ที่จำเป็น Yandex.Maps จะโหลดโดยอัตโนมัติสำหรับพื้นที่ที่ต้องการ โปรแกรมจะแจ้งให้คุณทราบเกี่ยวกับรถติด สถานที่เกิดอุบัติเหตุ และยังช่วยคุณค้นหาสถาบันและองค์กรต่างๆ ในพื้นที่ที่คุณต้องการ

จำเป็นต้องมีการเชื่อมต่อ GPRS ที่เชื่อมต่อเพื่อให้โปรแกรมทำงานได้!

คุณสมบัติหลักของ Yandex.Maps

  • แสดงตำแหน่งและทิศทางการเดินทางของคุณ (หากมีเครื่องรับ GPS)
  • สร้างเส้นทางที่เหมาะสมที่สุดในมอสโกและภูมิภาคมอสโกโดยคำนึงถึงการจราจรติดขัด
  • แผนที่โดยละเอียดของเมืองมากกว่า 130 แห่งในรัสเซีย ยูเครน และประเทศอื่นๆ พร้อมถนนและบ้านเลขที่
  • ความสามารถในการดูภาพดาวเทียมของพื้นที่
  • ให้ข้อมูลเกี่ยวกับการจราจรติดขัด
  • สามารถระบุตำแหน่งโดยประมาณได้โดยใช้สถานีผู้ให้บริการโทรศัพท์มือถือหรือฮอตสปอต Wi-Fi รอบตัวคุณ
  • แสดงตำแหน่งการติดตั้งกล้องตำรวจจราจร งานถนน อุบัติเหตุบนท้องถนน และจุดอื่นๆ ที่เป็นประโยชน์สำหรับผู้ขับขี่
  • ด้วย Yandex.Maps คุณสามารถค้นหาร้านกาแฟ ธนาคาร โรงแรม ร้านกาแฟ ร้านอาหาร และองค์กรอื่นๆ ได้อย่างง่ายดายในสถานที่ที่เหมาะสม
  • เป็นไปได้ที่จะบันทึกเส้นทางสามารถอัปโหลดแทร็กที่บันทึกไว้ไปยังบริการ Yandex.Maps
  • คุณสามารถมีส่วนร่วมในการสร้างแผนที่ถนนร่วมกับผู้ใช้รายอื่น คุณสามารถรายงานสถานที่เกิดอุบัติเหตุ ปัญหาบนท้องถนนโดยการเพิ่มป้ายชื่อลงในแผนที่
  • การปรากฏตัวของโหมดการทำงาน "กลางคืน" สำหรับช่วงเวลามืดของวัน
  • ความสามารถในการเปลี่ยนเป็นโหมดเต็มหน้าจอ
  • ทำงานแบบออฟไลน์โดยไม่ต้องเข้าถึงเครือข่าย

Yandex.Traffic

พื้นที่สีเหลืองและสีแดงแสดงการจราจรติดขัดและความแออัด โดยที่ความเร็วเฉลี่ยของรถน้อยกว่า 20 กม./ชม. พื้นที่สีเขียว - พื้นที่ปลอดรถที่รถยนต์เคลื่อนที่ด้วยความเร็วเฉลี่ย 30-40 กม./ชม. ยิ่งมีผู้เข้าร่วมในระบบมากเท่าไร ข้อมูลที่ได้รับก็จะยิ่งแม่นยำมากขึ้นเท่านั้น และทุกคนสามารถทิ้งรอยไว้บนแผนที่ได้

ทำงานในกรณีที่ไม่มีการเข้าถึงอินเทอร์เน็ต

  1. ตรวจสอบให้แน่ใจว่าแอปพลิเคชันมีสิทธิ์ในการอ่าน / เขียนจากดิสก์และเปิดใช้งานการแคชการ์ดในการตั้งค่า
  2. ดาวน์โหลดไฟล์เก็บถาวรพร้อมแผนที่ของภูมิภาคที่ต้องการ
  3. ค้นหาโฟลเดอร์ / default ในไฟล์เก็บถาวร
  4. ย้ายเนื้อหาของโฟลเดอร์เริ่มต้น / ไปยังโฟลเดอร์ / yandexmaps / (รหัสภาษา)บนอุปกรณ์มือถือ (เช่น / yandexmaps / ru-RU หรือ / yandexmaps / uk-UA ขึ้นอยู่กับภาษาที่ระบุในการตั้งค่า)

บริการนี้สร้างขึ้นในลักษณะที่ผู้ใช้ให้ข้อมูลเกี่ยวกับการจราจรติดขัด ติดตั้ง Yandex.Maps เปิดใช้งานตัวเลือก "รายงานการจราจรติดขัด" - และคุณเป็นสมาชิกเต็มรูปแบบของบริการ พิกัดของอุปกรณ์ของคุณจะถูกส่งไปยังเซิร์ฟเวอร์ทุก ๆ สองนาที ซึ่งจะถูกวิเคราะห์ และอ้างอิงจากข้อมูลจากผู้เข้าร่วมจำนวนมาก ระบบจะสร้างแผนงาน

เกาะชวาบนแผนที่ของอินโดนีเซีย

แผนที่เกาะชวาโดยละเอียด

แผนที่ท่องเที่ยวของชวากลาง

แผนที่ท่องเที่ยวของชวาตะวันตก

แผนที่ท่องเที่ยวของชวาตะวันออก

แผนที่ชวา

ชวาบนแผนที่โลกตั้งอยู่ในทะเลชวาซึ่งล้างชายฝั่งทางเหนือ จากทางใต้เกาะสามารถเข้าถึงมหาสมุทรอินเดียได้ ตามแผนที่ภูมิศาสตร์ของชวาจะแสดง ความยาวของเกาะจากตะวันตกไปตะวันออกเกือบพันกิโลเมตร เป็นเกาะที่ใหญ่ที่สุดในอินโดนีเซีย และเป็นที่ตั้งของกรุงจาการ์ตา เมืองหลวงของประเทศ

แผนที่ใดๆ ของชวาจะแสดงให้เห็นว่าประมาณหนึ่งในสามของอาณาเขตของเกาะนั้นถูกครอบครองโดยป่าฝนและป่าดงดิบ เกาะนี้แบ่งการปกครองออกเป็นหกภูมิภาค แผนที่โดยละเอียดของชวาประกอบด้วยจังหวัดต่างๆ เช่น บันเต็น ชวาตะวันตก ชวากลาง ชวาตะวันออก จาการ์ตา และยอกยาการ์ตา

มีสถานที่ท่องเที่ยวทางธรรมชาติอยู่บนเกาะโดยเขตอนุรักษ์ธรรมชาติและภูเขาไฟจำนวนมาก แผนที่ชวาในภาษารัสเซียจะช่วยคุณค้นหาเนินเขาที่มีชื่อเสียงที่สุดของกรากะตัวและมงบรอม เป็นที่น่าสังเกตว่าครั้งสุดท้ายที่ Krkatau ซึ่งไม่ได้ตั้งอยู่บนเกาะ แต่ระหว่างเกาะกับสุมาตราปะทุขึ้นในปี 2551

แผนที่ Java พร้อมสถานที่ท่องเที่ยวจาก Arrivo จะช่วยให้คุณเขียนเส้นทางที่ดีที่สุดและค้นหาสถานที่ที่น่าสนใจทั้งหมดของเกาะ

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

ส่วนต่อประสานแผนที่ (java.util.Map )

  1. Vget (คีย์เค)- ส่งคืนอ็อบเจ็กต์ที่สอดคล้องกับคีย์ที่ระบุ หรือ null หากแผนที่ไม่มีคีย์ที่ระบุ คีย์อาจเป็นโมฆะ
  2. Vput (KeyK, ValueV)- เพิ่มคีย์และค่าให้กับแผนที่ หากมีคีย์ดังกล่าวอยู่แล้ว อ็อบเจ็กต์ใหม่จะแทนที่คีย์ก่อนหน้าที่เชื่อมโยงกับคีย์นี้ เมธอดนี้ส่งคืนค่าก่อนหน้าของอ็อบเจ็กต์ หรือ null หากคีย์นั้นไม่มีอยู่ในแผนที่ก่อนหน้านี้ คีย์สามารถเป็นค่าว่างได้ แต่ค่าต้องไม่เป็นค่าว่าง
  3. voidputAll (แผนที่รายการ)- เพิ่มองค์ประกอบทั้งหมดของแผนที่ที่กำหนดให้กับแผนที่ปัจจุบัน
  4. booleancontainsKey (Objectkey)- คืนค่า จริง หากคีย์ที่ระบุอยู่ในแผนที่
  5. booleancontainsValue (ค่าวัตถุ)- ส่งคืนค่า จริง หากแผนที่มีค่าที่ระบุ
  6. ชุด > รายการชุด ()- ส่งกลับการแสดงแผนที่เป็นชุดของวัตถุ Map.Entry เช่น คู่คีย์-ค่า คุณสามารถลบรายการออกจากมุมมองนี้ และรายการจะถูกลบออกจากแผนที่ แต่คุณไม่สามารถเพิ่มได้
  7. ชุด ชุดคีย์ ()- ส่งคืนมุมมองแผนที่เป็นชุดของปุ่มทั้งหมด คุณสามารถลบรายการออกจากมุมมองนี้ และคีย์และค่าที่เกี่ยวข้องจะถูกลบออกจากแผนที่โดยอัตโนมัติ แต่คุณไม่สามารถเพิ่มรายการใหม่ได้
  8. ของสะสม ค่า ()- ส่งกลับมุมมองแผนที่เป็นชุดของค่าทั้งหมด คุณสามารถลบรายการออกจากมุมมองนี้ และค่าและคีย์ที่เกี่ยวข้องจะถูกลบออกจากแผนที่โดยอัตโนมัติ แต่คุณไม่สามารถเพิ่มรายการใหม่ได้

การใช้งานแผนที่พื้นฐาน

ไลบรารี Java มีการใช้งานแผนที่หลักสองแบบ: HashMap hash map และ TreeMap tree map ทั้งสองคลาสใช้อินเทอร์เฟซแผนที่
คีย์จะถูกจัดเรียงแบบสุ่มในแผนที่แฮช และเรียงลำดับอย่างเข้มงวดในแผนผังต้นไม้ ฟังก์ชันแฮชหรือฟังก์ชันเปรียบเทียบใช้สำหรับคีย์เท่านั้น และค่าที่สัมพันธ์กับคีย์เหล่านี้จะไม่ถูกแฮชหรือเปรียบเทียบ
เลือกการ์ดไหนดี? เช่นเดียวกับชุด การแฮชจะเร็วกว่าเล็กน้อย ดังนั้นจึงขอแนะนำให้ใช้โดยที่ลำดับของคีย์ไม่สำคัญ

ต่อไปนี้แสดงวิธีการสร้างแมปแฮชเพื่อเก็บข้อมูลพนักงาน พนักงานแผนที่ = HashMap ใหม่< String, Employee>(); // HashMap ใช้อินเทอร์เฟซ Map Employee harry = new Employee (“Harry Hacker”); staff.put (“987-98-9996”, แฮร์รี่);

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

สตริง s = “987-98-9996”; พนักงาน e = staff.get (s); // อ่านบันทึก harry

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

วิธีการลบ () จะลบองค์ประกอบออกจากแผนที่ และวิธีขนาด () จะคืนค่าจำนวนองค์ประกอบในแผนที่

ในสถาปัตยกรรมชุดข้อมูล ตัวแผนที่เองไม่ถือเป็นชุดข้อมูล (ในสถาปัตยกรรมโครงสร้างข้อมูลอื่นๆ แผนที่ถือเป็นชุดของคู่หรือค่า ที่จัดทำดัชนีโดยคีย์) อย่างไรก็ตาม ไลบรารี Java จัดให้มีการใช้มุมมองแผนที่ที่ใช้อินเทอร์เฟซ Collection หรืออินเทอร์เฟซลูกอย่างใดอย่างหนึ่ง

การแสดงมีสามประเภท: ชุดคีย์ ชุดของค่า (ซึ่งไม่ใช่ชุด) หรือชุดของคู่คีย์-ค่า คีย์และคู่คีย์-ค่าสร้างชุด เนื่องจากมีอินสแตนซ์ที่ไม่ซ้ำกันของออบเจ็กต์คีย์เพียงรายการเดียวในแผนที่ วิธีการที่แสดงด้านล่างจะคืนค่ามุมมองแผนที่ทั้งสามประเภทนี้

ตั้งค่า keySet () ค่าคอลเลกชัน ​​() Set> entrySet ()

(สมาชิกของคู่คีย์-ค่าชุดสุดท้ายเป็นออบเจ็กต์ของคลาสภายใน Map.Entry) โปรดทราบว่าชุดของคีย์ไม่ใช่ HashSet หรือ TreeSet แต่เป็นออบเจ็กต์ของคลาสอื่นที่ใช้อินเทอร์เฟซ Set Set interface ขยายส่วนต่อประสาน Collection ดังนั้น คุณสามารถใช้เมธอด keySet () ได้
ตัวอย่างเช่น คุณสามารถวนซ้ำคีย์ทั้งหมดของแผนที่:

ตั้งค่าคีย์ = map.keySet (); สำหรับ (คีย์สตริง: คีย์) (// แอ็คชันคีย์)

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

สำหรับ (รายการ Map.Entry: staff.entrySet ()) (String key = entry.getKey (); Employee value = entry.getValue (); // การดำเนินการด้วยคีย์และค่า)

การใช้งานแผนที่พิเศษ

แฮชการ์ดพร้อมแคชหละหลวม

คลาส WeakHashMap ของแฮชแมปที่มีการแคชแบบหลวมได้รับการออกแบบมาเพื่อแก้ปัญหาที่น่าสนใจ จะเกิดอะไรขึ้นกับค่าที่ไม่มีการใช้คีย์ในโปรแกรมอีกต่อไป เช่น เนื่องจากการอ้างอิงล่าสุดไปยังคีย์นั้นหายไป ในกรณีนี้ ไม่สามารถเข้าถึงออบเจกต์ค่าได้อีกต่อไป และเนื่องจากคีย์นี้ไม่มีอยู่ในโปรแกรมแล้ว จึงไม่มีวิธีลบคู่คีย์-ค่าออกจากแผนที่ แต่ทำไมระบบรวบรวมขยะไม่สามารถลบออกได้ซึ่งมีหน้าที่ในการลบวัตถุที่ไม่ได้ใช้?

น่าเสียดายที่มันไม่ง่ายอย่างนั้น ตัวรวบรวมขยะในระบบการจัดการหน่วยความจำจะติดตามวัตถุที่มีชีวิต ขณะที่ออบเจ็กต์แผนที่ทำงานอยู่ เซลล์แผนที่ทั้งหมดจะทำงานด้วย ดังนั้นโปรแกรมเองจึงต้องดูแลการลบค่าที่ไม่ได้ใช้ออกจากแผนที่ที่ใช้งานอยู่ นี่คือสิ่งที่คลาส WeakHashMap มีไว้เพื่อ โครงสร้างข้อมูลนี้โต้ตอบกับระบบรวบรวมขยะเพื่อลบคู่คีย์-ค่าเหล่านั้นซึ่งการอ้างอิงคีย์เพียงอย่างเดียวคือรายการตารางแฮช

นี่คือวิธีการทำงานของกลไกนี้ คลาส WeakHashMap ใช้การอ้างอิงที่ไม่รัดกุมในการจัดเก็บคีย์ ออบเจ็กต์ WeakReference มีการอ้างอิงไปยังอ็อบเจ็กต์อื่น เช่น ในกรณีนี้คือคีย์ตารางแฮช โดยปกติ หากการรวบรวมขยะพบว่าไม่มีการอ้างอิงถึงอ็อบเจ็กต์ ออบเจ็กต์นั้นจะถูกละทิ้ง และหากการอ้างอิงอ็อบเจ็กต์เดียวเป็นประเภท WeakReference การอ้างอิง lax นี้จะถูกจัดคิว โดยจะตรวจสอบลิงก์ใหม่ในคิวเป็นระยะ เนื่องจากหมายความว่าคีย์นี้ไม่ได้ใช้งานอีกต่อไปและสามารถลบออบเจ็กต์ของคีย์นี้ได้ ดังนั้นคลาส WeakHashMap จะลบค่าที่สอดคล้องกับคีย์นี้

การ์ดแฮชที่เชื่อมโยง

ใน JDK 1.4 มีการเสนอคลาส LinkedHashSet และ LinkedHashMap ที่จำลำดับที่ไอเท็มใหม่ถูกแทรกลงในชุดข้อมูล ดังนั้น ลำดับของรายการในตารางจึงดูไม่สุ่มอีกต่อไป เมื่อมีการเพิ่มระเบียนลงในตาราง ระเบียนเหล่านั้นจะสร้างรายการที่เชื่อมโยงเป็นทวีคูณ
พิจารณาตัวอย่างเช่นแผนที่:

พนักงานแผนที่ = LinkedHashMap ใหม่ (); Staff.put (“144-25-5464” พนักงานใหม่ (“Amy Lee”)); Staff.put (“567-24-2546” พนักงานใหม่ (“Harry Hacker”)); Staff.put (“157-62-7935” พนักงานใหม่ (“Gary Cooper”)); Staff.put (“456-62-5527” พนักงานใหม่ (“Francesca Cruz”)
staff.ketSet () Iterator () จะแสดงรายการคีย์ตามลำดับต่อไปนี้: 144-25-5464 567-24-2546 157-62-7935 456-62-5527
และ staff.values ​​​​() Iterator () จะแจกแจงค่าของมันดังนี้: Amy Lee Harry Hacker Gary Cooper Francesca Cruz

แฮชแมปที่สอดคล้องกันสามารถจดจำลำดับการเข้าถึงและนำมาพิจารณาเมื่อวนซ้ำองค์ประกอบ ทุกครั้งที่คุณเรียก get () หรือ put () รายการที่แตะจะถูกลบออกจากตำแหน่งและย้ายไปที่ส่วนท้ายของรายการที่เชื่อมโยง การดำเนินการเหล่านี้เปลี่ยนโครงสร้างของรายการที่เชื่อมโยง แต่ไม่ใช่เซลล์ของตารางแฮช เรกคอร์ดยังคงอยู่ในเซลล์ที่สอดคล้องกับรหัสแฮชของคีย์ ในการสร้าง hash map คุณต้องใช้นิพจน์ต่อไปนี้:

LinkedHashMap (ค่าเริ่มต้นความจุ loadFactor จริง)

การทราบลำดับการเข้าถึงเป็นสิ่งจำเป็น เช่น เพื่อสร้างแคช "ที่ใช้ล่าสุด" ตัวอย่างเช่น คุณอาจต้องจัดเก็บระเบียนที่ใช้บ่อยที่สุดในหน่วยความจำ และดึงข้อมูลที่คุณแทบไม่ต้องใช้งานจากฐานข้อมูล หากคุณไม่พบระเบียนในตาราง และตารางเต็มแล้ว คุณสามารถใช้ตัววนซ้ำเพื่อลบองค์ประกอบสองสามรายการแรกได้ องค์ประกอบเหล่านี้ใช้น้อยกว่าองค์ประกอบอื่น

แฮชการ์ดพร้อมการแฮชส่วนตัว

JDK 1.4 เพิ่มคลาสที่กำหนดเองอีกตัวหนึ่งคือ IdentityHashMap ที่ทำการแฮชแบบกำหนดเอง รหัสแฮชของคีย์ในนั้นไม่ได้คำนวณโดยวิธี hashCode () แต่โดยวิธี System.identityHashCode () วิธีนี้จะคำนวณรหัสแฮชตามที่อยู่ของวัตถุในหน่วยความจำ นอกจากนี้ คลาส IdentityHashMap ใช้ตัวดำเนินการ == แทนที่จะใช้วิธีเท่ากับ () เพื่อเปรียบเทียบอ็อบเจ็กต์

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

การใช้คอลเล็กชันใน Map

มุมมองที่ไม่สามารถแก้ไขได้

คลาส Collections ประกอบด้วยเมธอดที่สร้างชุดข้อมูลที่ไม่สามารถปรับเปลี่ยนได้ มุมมองเหล่านี้ใช้ตรวจสอบชุดที่มีอยู่ ซึ่งดำเนินการในขั้นตอนการทำงานของโปรแกรม เมื่อมีการพยายามแก้ไขชุด ข้อยกเว้นจะถูกส่งออกไปและชุดข้อมูลจะไม่เปลี่ยนแปลง
ในการรับมุมมองแผนที่ที่ไม่สามารถแก้ไขได้ ใช้วิธีการต่อไปนี้:

Collections.unmodifiableMap Collections.unmodifiableSortedMap

ตัวอย่างเช่น สมมติว่าคุณต้องการให้โค้ดของคุณดูแต่ไม่แตะต้องเนื้อหาของชุดข้อมูล โดยทำตามขั้นตอนเหล่านี้:

แผนที่ พนักงาน = HashMap ใหม่ (); ... lookAt (ใหม่ Collections.unmodifiableMap (พนักงาน));

วิธีการ Collections.unmodifiableMap จะคืนค่าอินสแตนซ์ของคลาสที่ใช้อินเทอร์เฟซของแผนที่ ตัวเข้าถึงของคลาสนี้ดึงค่าจากชุดพนักงาน เห็นได้ชัดว่าวิธี lookAt () สามารถเรียกวิธีการทั้งหมดที่ประกาศในอินเทอร์เฟซแผนที่ อย่างไรก็ตาม วิธีการแก้ไขทั้งหมดได้รับการกำหนดใหม่เพื่อให้พวกเขาโยน UnsupportedOperationException แทนการเข้าถึงชุดฐาน

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

มุมมองที่ซิงโครไนซ์

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

แทนที่จะใช้คลาสชุดข้อมูลเธรดที่ปลอดภัย ผู้พัฒนาไลบรารีเลือกใช้เอ็นจินการดูสำหรับสิ่งนี้ ตัวอย่างเช่น เมธอดแบบสแตติก synchronizedMap () ของคลาส Collections สามารถแปลงแผนที่ใดๆ ให้เป็นแผนที่ด้วยตัวเข้าถึงที่ซิงโครไนซ์

HashMap hashMap = HashMap ใหม่ (); แผนที่ แผนที่ = Collections.synchronizedMap (hashMap);

ตอนนี้คุณสามารถเข้าถึงวัตถุแผนที่จากเธรดต่างๆ เมธอดต่างๆ เช่น get () และ put () ถูกทำให้เป็นอนุกรม: แต่ละเมธอดต้องทำงานให้เสร็จสิ้นก่อนที่เธรดอื่นจะเรียกเมธอดที่คล้ายกันได้

เมื่อพัฒนาโปรแกรม คุณต้องตรวจสอบให้แน่ใจว่าไม่มีเธรดใดเข้าถึงโครงสร้างข้อมูลโดยใช้วิธีการยกเลิกการซิงโครไนซ์ตามปกติ วิธีที่ง่ายที่สุดในการตรวจสอบนี้คือไม่เก็บการอ้างอิงใด ๆ ไปยังวัตถุที่อยู่ภายใต้

คลาส Hashtable และพจนานุกรม

Hashtable แบบดั้งเดิมมีจุดประสงค์เดียวกับ HashMap และมีอินเทอร์เฟซเดียวกัน เช่นเดียวกับเมธอดของคลาส Vector เมธอดของคลาส Hashtable จะถูกซิงโครไนซ์ หากคุณไม่ต้องการจัดให้มีการซิงโครไนซ์หรือความเข้ากันได้ของโค้ดสำหรับแพลตฟอร์ม Java เวอร์ชันก่อนหน้า คุณควรใช้คลาส HashMap คลาส Dictionary เป็นคลาสพาเรนต์นามธรรมของ Hashtable


2021
mamipizza.ru - ธนาคาร เงินฝากและเงินฝาก โอนเงิน. เงินกู้และภาษี เงินกับรัฐ