คำถามติดแท็ก hashmap

โครงสร้างข้อมูลที่ใช้ฟังก์ชันแฮชเพื่อแมปค่าการระบุหรือที่เรียกว่าคีย์กับค่าที่เกี่ยวข้อง



7
แผนที่แฮช JavaScript ใช้งานอย่างไร
ปัจจุบันฉันทำงานกับ OpenLayers และมีชุดข้อมูลจำนวนมากเพื่อวาดลงในเลเยอร์เวกเตอร์ (มากกว่า 100,000 เวกเตอร์) ตอนนี้ฉันกำลังพยายามใส่เวกเตอร์เหล่านี้ทั้งหมดลงในแผนที่แฮช JavaScript เพื่อวิเคราะห์ประสิทธิภาพ ฉันต้องการทราบว่ามีการใช้งานแฮชแมปใน JavaScript อย่างไรมันเป็นฟังก์ชันแฮชจริงหรือเป็นเพียงฟังก์ชันห่อหุ้มที่ใช้โครงสร้างข้อมูลอย่างง่ายและอัลกอริทึมการค้นหา

4
เธรด HashMap ปลอดภัยสำหรับคีย์อื่นหรือไม่
หากฉันมีเธรดหลายเธรดที่เข้าถึง HashMap แต่รับประกันได้ว่าพวกเขาจะไม่เข้าถึงคีย์เดียวกันในเวลาเดียวกันนั่นอาจทำให้เกิดสภาวะการแข่งขันได้หรือไม่

5
ความจุและปัจจัยโหลดที่เหมาะสมที่สุดสำหรับ HashMap ขนาดคงที่คืออะไร?
ฉันกำลังพยายามหาค่าความจุและโหลดแฟกเตอร์ที่เหมาะสมที่สุดสำหรับบางกรณี ฉันคิดว่าฉันมีส่วนสำคัญของมัน แต่ฉันก็ยังขอบคุณสำหรับคำยืนยันจากคนที่มีความรู้มากกว่าฉัน :) ถ้าฉันรู้ว่า HashMap ของฉันจะเติมเต็มให้มีวัตถุ 100 ชิ้นและจะใช้เวลาส่วนใหญ่ในการมีวัตถุ 100 ชิ้นฉันเดาว่าค่าที่เหมาะสมที่สุดคือความจุเริ่มต้น 100 และปัจจัยการโหลด 1? หรือฉันต้องการความจุ 101 หรือมี gotcha อื่น ๆ ? แก้ไข: ตกลงฉันตั้งเวลาไว้สองสามชั่วโมงและทำการทดสอบบางอย่าง นี่คือผลลัพธ์: อยากรู้อยากเห็นความจุความจุ +1 ความจุ +2 ความจุ -1 และแม้แต่ความจุ -10 ทั้งหมดให้ผลลัพธ์ที่เหมือนกันทุกประการ ฉันคาดหวังว่าอย่างน้อยความจุ -1 และความจุ -10 จะให้ผลลัพธ์ที่แย่ลง การใช้ความจุเริ่มต้น (ซึ่งตรงข้ามกับการใช้ค่าเริ่มต้นคือ 16) ช่วยให้การปรับปรุง put () ที่สังเกตเห็นได้ - เร็วขึ้นถึง 30% การใช้โหลดแฟกเตอร์ 1 …
86 java  hashmap 

5
ฉันจะหลีกเลี่ยงการทำซ้ำรหัสเริ่มต้น hashmap ของ hashmap ได้อย่างไร
ลูกค้าทุกคนมีรหัสและใบแจ้งหนี้จำนวนมากที่มีวันที่เก็บไว้เป็น Hashmap ของลูกค้าโดย id ของ hashmap ของใบแจ้งหนี้ตามวันที่: HashMap<LocalDateTime, Invoice> allInvoices = allInvoicesAllClients.get(id); if(allInvoices!=null){ allInvoices.put(date, invoice); //<---REPEATED CODE }else{ allInvoices = new HashMap<>(); allInvoices.put(date, invoice); //<---REPEATED CODE allInvoicesAllClients.put(id, allInvoices); } โซลูชัน Java ดูเหมือนว่าจะใช้getOrDefault: HashMap<LocalDateTime, Invoice> allInvoices = allInvoicesAllClients.getOrDefault( id, new HashMap<LocalDateTime, Invoice> (){{ put(date, invoice); }} ); แต่ถ้ารับไม่เป็นโมฆะฉันยังต้องการใส่ (วันที่ใบแจ้งหนี้) เพื่อดำเนินการและเพิ่มข้อมูลไปที่ "allInvoicesAllClients" …
27 java  java-8  hashmap 
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.