JavaRush /Java Blog /Random-JA /コーヒーブレイク#173。HashMap と Hashtable の違いは何ですか。Java で NullPoin...

コーヒーブレイク#173。HashMap と Hashtable の違いは何ですか。Java で NullPointerException を見つけて修正する方法

Random-JA グループに公開済み

ハッシュマップとハッシュテーブルの違いは何ですか

出典: Medium 今日は、Java の面接で最も人気のある質問の 1 つである HashMap と Hashtable の違いについて学びます。 コーヒーブレイク#173。 HashMap と Hashtable の違いは何ですか。 Java で NullPointerException を見つけて修正する方法 - 1ハッシュテーブルは、ハッシュと Map インターフェイスの実装に基づいて、キー ペアとその値を保存するためのデータ構造です。HashMap は、ハッシュ化と Map インターフェイスの実装に基づいて、キーと値を格納するためのデータ構造でもあります。HashMap を使用すると、キーによって値をすばやく取得できます。たとえば、ユーザーの名前や電話番号などです。Java の HashMap と Hashtable には大きな違いがあります。これらには、スレッドの安全性、同期、およびマップ実装の一貫性が含まれます。Java プログラムで使用するデータ構造のタイプを選択するときは、次の側面を考慮することが重要です。 HashMap は、キーと値のペアの非同期で順序付けされていないマップです。NULL 値を許可し、等価性チェックとしてハッシュ コードを使用しますが、Hashtable はキーと値のペアの同期された順序付きマップです。null 値は許可されずequals()メソッドを使用して等しいかどうかをチェックします。HashMap のデフォルトの容量は 16、Hashtable のデフォルトの初期容量は 11 です。HashMap オブジェクトの値はイテレータを使用して反復処理されます。Hashtable は、列挙子を使用してベクトル以外の唯一のクラスです。 Hashtable オブジェクトの値を反復処理します。HashMap と Hashtable の違いは、Java の面接で最も人気のある質問の 1 つであることを覚えておいてください。

Java で NullPointerException を見つけて修正する方法

出典: Theflashreads この記事を読むと、Java コードの一般的なエラーである NullPointerException を見つけて修正できるようになります。 コーヒーブレイク#173。 HashMap と Hashtable の違いは何ですか。 Java で NullPointerException を見つけて修正する方法 - 2

NullPointerException とは何ですか?

java.lang.NullPointerException は、Java の実行時例外です。これは、オブジェクトを指していないか参照していない変数、つまり null の変数にアクセスしようとしたときに発生します。NullPointerException は実行時例外であるため、アプリケーション コードで明示的にキャッチして処理する必要はありません。

NullPointerException はどのような状況で発生しますか?

NullPointerException は、初期化されていないオブジェクトにアクセスしようとすると発生します。すでに述べたように、これはオブジェクト参照がどこにも行かず、null 値を持つ場合に発生します。最も一般的なNullPointerException例外シナリオの一部を次に示します。
  • null オブジェクトのプロパティにアクセスします。
  • 例外をスローするメソッドから null をスローします。
  • 依存関係注入フレームワークの構成が正しくありません (例: (Spring))。
  • null パラメータをメソッドに渡す。
  • null オブジェクトのメソッドを呼び出す。
  • Null オブジェクトに対して synchronized を使用する。
  • null オブジェクトのインデックス要素 (配列など) にアクセスします。

NullPointerException の例

この例では、文字列をパラメータとして受け取り、その長さを出力するprintLengthメソッドを呼び出そうとしています。パラメータとして渡された文字列の値が null の場合、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 は、次のチェックと予防方法を使用することで回避できます。
  • オブジェクトのメソッドまたはプロパティにアクセスする前にnullチェックを追加して、オブジェクトが適切に初期化されていることを確認します。

  • 文字列操作には 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);
    
        }
    
    }
  • プリミティブは null 参照を持つことができないため、可能な限りオブジェクトではなくプリミティブを使用してください。たとえば、Integerの代わりにintを使用し、Booleanの代わりにboolean を使用します。

  • コードを再確認してください。これにより、 NullPointerExceptionがスローされる可能性が低くなります。

コメント
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION