JavaRush /จาวาบล็อก /Random-TH /คอฟฟี่เบรค #173. ความแตกต่างระหว่าง HashMap และ Hashtable...

คอฟฟี่เบรค #173. ความแตกต่างระหว่าง HashMap และ Hashtable คืออะไร วิธีค้นหาและแก้ไข NullPointerException ใน Java

เผยแพร่ในกลุ่ม

ความแตกต่างระหว่าง HashMap และ Hashtable คืออะไร

ที่มา: ปานกลาง วันนี้คุณจะได้เรียนรู้คำตอบของหนึ่งในคำถามสัมภาษณ์ Java ที่ได้รับความนิยมมากที่สุด: อะไรคือความแตกต่างระหว่าง HashMap และ Hashtable คอฟฟี่เบรค #173.  ความแตกต่างระหว่าง HashMap และ Hashtable คืออะไร  วิธีค้นหาและแก้ไข NullPointerException ใน Java - 1Hashtable คือโครงสร้างข้อมูลสำหรับจัดเก็บคู่คีย์และค่าของคู่คีย์ โดยอิงจากการแฮชและการใช้งานอินเทอร์เฟซแผนที่ HashMap ยังเป็นโครงสร้างข้อมูลสำหรับจัดเก็บคีย์และค่า โดยอิงจากการแฮชและการใช้งานอินเทอร์เฟซแผนที่ HashMap ช่วยให้คุณรับค่าตามคีย์ได้อย่างรวดเร็ว เช่น ชื่อผู้ใช้และหมายเลขโทรศัพท์ มีความแตกต่างที่สำคัญระหว่าง HashMap และ Hashtable ในJava ซึ่งรวมถึงความปลอดภัยของเธรด การซิงโครไนซ์ และความสอดคล้องในการใช้งานแผนที่ สิ่งสำคัญคือต้องพิจารณาประเด็นเหล่านี้เมื่อเลือกประเภทของโครงสร้างข้อมูลที่จะใช้ในโปรแกรม Java ของคุณ: HashMap เป็นแมปคู่คีย์-ค่าที่ไม่ซิง โครไนซ์และไม่เรียงลำดับ อนุญาตให้มีค่า Null และใช้รหัสแฮชในการตรวจสอบความเท่าเทียมกัน ในขณะที่ Hashtable เป็นแผนผังคู่คีย์-ค่าที่ซิงโครไนซ์กัน ไม่อนุญาตให้มีค่าว่างและใช้ เมธอด เท่ากับ ()เพื่อตรวจสอบความเท่าเทียมกัน HashMap มีความจุเริ่มต้นที่ 16 และ Hashtable มีความจุเริ่มต้นเริ่มต้นที่ 11 ค่าของวัตถุ HashMap จะถูกวนซ้ำโดยใช้ตัววนซ้ำ และ Hashtable เป็นคลาสเดียวที่ไม่ใช่เวกเตอร์ที่ใช้ตัวแจงนับ วนซ้ำค่าของวัตถุ Hashtable โปรดจำไว้ว่าความแตกต่างระหว่าง HashMap และ Hashtable เป็นหนึ่งในคำถามยอดนิยมในการสัมภาษณ์ Java

วิธีค้นหาและแก้ไข NullPointerException ใน Java

ที่มา: Theflashreads หลังจากอ่านบทความนี้ คุณจะสามารถค้นหาและแก้ไขข้อผิดพลาดทั่วไปในโค้ด Java - NullPointerException ได้ดีขึ้น คอฟฟี่เบรค #173.  ความแตกต่างระหว่าง HashMap และ Hashtable คืออะไร  วิธีค้นหาและแก้ไข NullPointerException ใน Java - 2

NullPointerException คืออะไร

java.lang.NullPointerExceptionเป็นข้อยกเว้นรันไทม์ใน Java มันเกิดขึ้นเมื่อมีความพยายามในการเข้าถึงตัวแปรที่ไม่ได้ชี้ไปยังหรืออ้างอิงถึงวัตถุใด ๆ นั่นคือมันเป็นโมฆะ เนื่องจากNullPointerExceptionเป็นข้อยกเว้นรันไทม์ จึงไม่จำเป็นต้องถูกจับและจัดการอย่างชัดเจนในโค้ดของแอปพลิเคชัน

NullPointerException เกิดขึ้นภายใต้สถานการณ์ใด

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

ตัวอย่าง NullPointerException

ในตัวอย่างนี้ เรากำลังพยายามเรียกใช้ เมธอดprintLengthซึ่งรับสตริงเป็นพารามิเตอร์และพิมพ์ความยาว หากค่าของสตริงที่ส่งผ่านเป็นพารามิเตอร์เป็นโมฆะjava.lang.NullPointerException จะถูกส่งออก ไป
public class NullPointerExceptionExample {

    private static void printLength(String str) {

        System.out.println(str.length());

    }



    public static void main(String args[]) {

        String nullString = null;

        printLength(nullString);

    }

}





Exception in thread "main" java.lang.NullPointerException

    at NullPointerExceptionExample.printLength(NullPointerExceptionExample.java:3)

    at NullPointerExceptionExample.main(NullPointerExceptionExample.java:8)

วิธีหลีกเลี่ยงการขว้าง NullPointerException

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

  • ใช้ Apache Commons StringUtils สำหรับการดำเนินการกับสตริง: ตัวอย่างเช่นStringUtils.isNotEmpty()เพื่อตรวจสอบว่าสตริงว่างเปล่าหรือไม่ก่อนนำไปใช้เพิ่มเติม

    import org.apache.commons.lang3.StringUtils;
    
    
    
    public class NullPointerExceptionExample {
    
        private static void printLength(String str) {
    
            if (StringUtils.isNotEmpty(str)) {
    
                System.out.println(str.length());
    
            } else {
    
                System.out.println("This time there is no NullPointerException");
    
            }
    
        }
    
    
    
        public static void main(String args[]) {
    
            String nullString = null;
    
            printLength(nullString);
    
        }
    
    }
  • ใช้วัตถุพื้นฐานแทนวัตถุทุกครั้งที่เป็นไปได้ เนื่องจากไม่สามารถมีการอ้างอิงที่เป็นโมฆะได้ ตัวอย่างเช่นใช้intแทนIntegerและbooleanแทนBoolean

  • ตรวจสอบให้แน่ใจว่าคุณตรวจสอบรหัสของคุณอีกครั้ง วิธีนี้จะช่วยลดโอกาสที่NullPointerException จะถูกโยน ทิ้ง

ความคิดเห็น
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION