以下のような、二つの配列を併合させ、数字を小さい順に並べ替えた新たな配列を作りたいのですが、ArrayIndexOutOfBoundsExceptionというエラーが表示されます。

なぜこのようになるか見当がつきません。返答お待ちしております。

public static int[] merge(int[] arr1, int[] arr2) {
      int[] arr3 = new int[arr1.length+arr2.length];
      int dim=0;

        for(int i=0;i<arr1.length; i++) {
            for(int j=0; j<arr2.length; j++) {
                if(arr1[i]<arr2[j]) {
                    arr3[dim]=arr1[i];
                    dim++;
                }
                else if(arr1[i]==arr2[j]) {
                    arr3[dim]=arr1[i];
                    dim++;
                    arr3[dim]=arr2[j];
                    dim++;
                }
                else {
                    arr3[dim]=arr2[j];
                    dim++;
                }
           }

        }

    return arr3;
}