JavaRush /Java Blog /Random-TL /Coffee break #173. Ano ang pagkakaiba sa pagitan ng HashM...

Coffee break #173. Ano ang pagkakaiba sa pagitan ng HashMap at Hashtable. Paano hanapin at ayusin ang NullPointerException sa Java

Nai-publish sa grupo

Ano ang pagkakaiba sa pagitan ng HashMap at Hashtable

Source: Medium Ngayon ay matututunan mo ang sagot sa isa sa mga pinakasikat na tanong sa panayam sa Java: ano ang pagkakaiba ng HashMap at Hashtable. Coffee break #173.  Ano ang pagkakaiba sa pagitan ng HashMap at Hashtable.  Paano hanapin at ayusin ang NullPointerException sa Java - 1Ang Hashtable ay isang istraktura ng data para sa pag-iimbak ng mga pares ng key at ang kanilang mga halaga, batay sa pag-hash at pagpapatupad ng interface ng Map. Ang HashMap ay isa ring istruktura ng data para sa pag-iimbak ng mga susi at halaga, batay sa pag-hash at pagpapatupad ng interface ng Map. Hinahayaan ka ng HashMap na mabilis na makakuha ng halaga sa pamamagitan ng key. Halimbawa, ang pangalan at numero ng telepono ng gumagamit. May mga makabuluhang pagkakaiba sa pagitan ng HashMap at Hashtable sa Java . Kabilang dito ang kaligtasan ng thread, pag-synchronize, at pagkakapare-pareho ng pagpapatupad ng Map. Mahalagang isaalang-alang ang mga aspetong ito kapag pumipili ng uri ng istruktura ng data na gagamitin sa iyong Java program: Ang HashMap ay isang hindi naka-synchronize , hindi nakaayos na mapa ng mga pares ng key-value. Pinapayagan nito ang mga null na halaga at gumagamit ng hash code bilang pagsusuri sa pagkakapantay-pantay, habang ang Hashtable ay isang naka-synchronize na nakaayos na mapa ng mga pares ng key-value. Hindi nito pinapayagan ang mga null na halaga at ginagamit ang equals() na paraan upang suriin ang pagkakapantay-pantay. Ang isang HashMap ay may default na kapasidad na 16, at ang isang Hashtable ay may default na paunang kapasidad na 11. Ang mga halaga ng isang HashMap object ay inuulit sa paggamit ng isang iterator, at ang Hashtable ay ang tanging klase maliban sa isang vector na gumagamit ng isang enumerator upang umulit sa mga halaga ng isang Hashtable na bagay. Tandaan na ang mga pagkakaiba sa pagitan ng HashMap at Hashtable ay isa sa mga pinakasikat na tanong sa mga panayam sa Java.

Paano hanapin at ayusin ang NullPointerException sa Java

Pinagmulan: Theflashreads Pagkatapos basahin ang artikulong ito, mas mahahanap mo at maaayos ang isang karaniwang error sa Java code - NullPointerException. Coffee break #173.  Ano ang pagkakaiba sa pagitan ng HashMap at Hashtable.  Paano hanapin at ayusin ang NullPointerException sa Java - 2

Ano ang isang NullPointerException?

Ang java.lang.NullPointerException ay isang runtime exception sa Java. Ito ay nangyayari kapag ang isang pagtatangka ay ginawa upang ma-access ang isang variable na hindi tumuturo sa o sumangguni sa anumang bagay, iyon ay, ito ay null. Dahil ang NullPointerException ay isang run-time exception, hindi ito kailangang mahuli at hayagang pangasiwaan sa application code.

Sa ilalim ng anong mga pangyayari nangyayari ang isang NullPointerException?

Ang NullPointerException ay nangyayari kapag ang isang pagtatangka ay ginawa upang ma-access ang isang bagay na hindi sinimulan. Gaya ng nabanggit na, ito ay nangyayari kapag ang object reference ay wala saanman at may null value. Narito ang ilan sa mga pinakakaraniwang senaryo ng pagbubukod ng NullPointerException :
  • I-access ang mga katangian ng isang null object.
  • Paghahagis ng null mula sa isang paraan na naghagis ng isang pagbubukod.
  • Maling configuration para sa dependency injection frameworks, halimbawa: (Spring).
  • Pagpasa ng mga null na parameter sa isang pamamaraan.
  • Mga pamamaraan ng pagtawag sa isang null object.
  • Paggamit ng naka-synchronize sa isang null object.
  • I-access ang elemento ng index (halimbawa, sa isang array) ng isang null object.

Halimbawa NullPointerException

Sa halimbawang ito, sinusubukan naming tawagan ang paraan ng printLength , na kumukuha ng string bilang parameter at nagpi-print ng haba nito. Kung null ang value ng string na ipinasa bilang parameter, itatapon ang isang 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)

Paano maiwasan ang pagtapon ng NullPointerException

Maaaring iwasan ang NullPointerException sa pamamagitan ng paggamit ng mga sumusunod na pagsusuri at mga paraan ng pag-iwas:
  • Tiyakin na ang isang bagay ay maayos na nasimulan sa pamamagitan ng pagdaragdag ng null check bago i-access ang mga pamamaraan o katangian nito.

  • Gamitin ang Apache Commons StringUtils para sa mga pagpapatakbo ng string: halimbawa, StringUtils.isNotEmpty() upang suriin kung walang laman ang isang string bago ito gamitin pa.

    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);
    
        }
    
    }
  • Gumamit ng mga primitive sa halip na mga bagay hangga't maaari, dahil hindi sila maaaring magkaroon ng mga null reference. Halimbawa, gumamit ng int sa halip na Integer at boolean sa halip na Boolean .

  • Tiyaking i-double check mo ang iyong code. Ito ay magbabawas sa posibilidad ng isang NullPointerException na itinapon .

Mga komento
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION