equal
deleted
inserted
replaced
108 |
108 |
109 /** |
109 /** |
110 * Checks that {@code fromIndex} and {@code toIndex} are in |
110 * Checks that {@code fromIndex} and {@code toIndex} are in |
111 * the range and throws an exception if they aren't. |
111 * the range and throws an exception if they aren't. |
112 */ |
112 */ |
113 private static void rangeCheck(int arrayLength, int fromIndex, int toIndex) { |
113 static void rangeCheck(int arrayLength, int fromIndex, int toIndex) { |
114 if (fromIndex > toIndex) { |
114 if (fromIndex > toIndex) { |
115 throw new IllegalArgumentException( |
115 throw new IllegalArgumentException( |
116 "fromIndex(" + fromIndex + ") > toIndex(" + toIndex + ")"); |
116 "fromIndex(" + fromIndex + ") > toIndex(" + toIndex + ")"); |
117 } |
117 } |
118 if (fromIndex < 0) { |
118 if (fromIndex < 0) { |
2577 |
2577 |
2578 int length = a.length; |
2578 int length = a.length; |
2579 if (a2.length != length) |
2579 if (a2.length != length) |
2580 return false; |
2580 return false; |
2581 |
2581 |
2582 for (int i=0; i<length; i++) |
2582 return ArraysSupport.mismatch(a, a2, length) < 0; |
2583 if (a[i] != a2[i]) |
|
2584 return false; |
|
2585 |
|
2586 return true; |
|
2587 } |
2583 } |
2588 |
2584 |
2589 /** |
2585 /** |
2590 * Returns true if the two specified arrays of longs, over the specified |
2586 * Returns true if the two specified arrays of longs, over the specified |
2591 * ranges, are <i>equal</i> to one another. |
2587 * ranges, are <i>equal</i> to one another. |
2626 int aLength = aToIndex - aFromIndex; |
2622 int aLength = aToIndex - aFromIndex; |
2627 int bLength = bToIndex - bFromIndex; |
2623 int bLength = bToIndex - bFromIndex; |
2628 if (aLength != bLength) |
2624 if (aLength != bLength) |
2629 return false; |
2625 return false; |
2630 |
2626 |
2631 for (int i = 0; i < aLength; i++) |
2627 return ArraysSupport.mismatch(a, aFromIndex, |
2632 if (a[aFromIndex++] != b[bFromIndex++]) |
2628 b, bFromIndex, |
2633 return false; |
2629 aLength) < 0; |
2634 |
|
2635 return true; |
|
2636 } |
2630 } |
2637 |
2631 |
2638 /** |
2632 /** |
2639 * Returns {@code true} if the two specified arrays of ints are |
2633 * Returns {@code true} if the two specified arrays of ints are |
2640 * <i>equal</i> to one another. Two arrays are considered equal if both |
2634 * <i>equal</i> to one another. Two arrays are considered equal if both |
2655 |
2649 |
2656 int length = a.length; |
2650 int length = a.length; |
2657 if (a2.length != length) |
2651 if (a2.length != length) |
2658 return false; |
2652 return false; |
2659 |
2653 |
2660 for (int i=0; i<length; i++) |
2654 return ArraysSupport.mismatch(a, a2, length) < 0; |
2661 if (a[i] != a2[i]) |
|
2662 return false; |
|
2663 |
|
2664 return true; |
|
2665 } |
2655 } |
2666 |
2656 |
2667 /** |
2657 /** |
2668 * Returns true if the two specified arrays of ints, over the specified |
2658 * Returns true if the two specified arrays of ints, over the specified |
2669 * ranges, are <i>equal</i> to one another. |
2659 * ranges, are <i>equal</i> to one another. |
2704 int aLength = aToIndex - aFromIndex; |
2694 int aLength = aToIndex - aFromIndex; |
2705 int bLength = bToIndex - bFromIndex; |
2695 int bLength = bToIndex - bFromIndex; |
2706 if (aLength != bLength) |
2696 if (aLength != bLength) |
2707 return false; |
2697 return false; |
2708 |
2698 |
2709 for (int i = 0; i < aLength; i++) |
2699 return ArraysSupport.mismatch(a, aFromIndex, |
2710 if (a[aFromIndex++] != b[bFromIndex++]) |
2700 b, bFromIndex, |
2711 return false; |
2701 aLength) < 0; |
2712 |
|
2713 return true; |
|
2714 } |
2702 } |
2715 |
2703 |
2716 /** |
2704 /** |
2717 * Returns {@code true} if the two specified arrays of shorts are |
2705 * Returns {@code true} if the two specified arrays of shorts are |
2718 * <i>equal</i> to one another. Two arrays are considered equal if both |
2706 * <i>equal</i> to one another. Two arrays are considered equal if both |
2733 |
2721 |
2734 int length = a.length; |
2722 int length = a.length; |
2735 if (a2.length != length) |
2723 if (a2.length != length) |
2736 return false; |
2724 return false; |
2737 |
2725 |
2738 for (int i=0; i<length; i++) |
2726 return ArraysSupport.mismatch(a, a2, length) < 0; |
2739 if (a[i] != a2[i]) |
|
2740 return false; |
|
2741 |
|
2742 return true; |
|
2743 } |
2727 } |
2744 |
2728 |
2745 /** |
2729 /** |
2746 * Returns true if the two specified arrays of shorts, over the specified |
2730 * Returns true if the two specified arrays of shorts, over the specified |
2747 * ranges, are <i>equal</i> to one another. |
2731 * ranges, are <i>equal</i> to one another. |
2782 int aLength = aToIndex - aFromIndex; |
2766 int aLength = aToIndex - aFromIndex; |
2783 int bLength = bToIndex - bFromIndex; |
2767 int bLength = bToIndex - bFromIndex; |
2784 if (aLength != bLength) |
2768 if (aLength != bLength) |
2785 return false; |
2769 return false; |
2786 |
2770 |
2787 for (int i = 0; i < aLength; i++) |
2771 return ArraysSupport.mismatch(a, aFromIndex, |
2788 if (a[aFromIndex++] != b[bFromIndex++]) |
2772 b, bFromIndex, |
2789 return false; |
2773 aLength) < 0; |
2790 |
|
2791 return true; |
|
2792 } |
2774 } |
2793 |
2775 |
2794 /** |
2776 /** |
2795 * Returns {@code true} if the two specified arrays of chars are |
2777 * Returns {@code true} if the two specified arrays of chars are |
2796 * <i>equal</i> to one another. Two arrays are considered equal if both |
2778 * <i>equal</i> to one another. Two arrays are considered equal if both |
2812 |
2794 |
2813 int length = a.length; |
2795 int length = a.length; |
2814 if (a2.length != length) |
2796 if (a2.length != length) |
2815 return false; |
2797 return false; |
2816 |
2798 |
2817 for (int i=0; i<length; i++) |
2799 return ArraysSupport.mismatch(a, a2, length) < 0; |
2818 if (a[i] != a2[i]) |
|
2819 return false; |
|
2820 |
|
2821 return true; |
|
2822 } |
2800 } |
2823 |
2801 |
2824 /** |
2802 /** |
2825 * Returns true if the two specified arrays of chars, over the specified |
2803 * Returns true if the two specified arrays of chars, over the specified |
2826 * ranges, are <i>equal</i> to one another. |
2804 * ranges, are <i>equal</i> to one another. |
2861 int aLength = aToIndex - aFromIndex; |
2839 int aLength = aToIndex - aFromIndex; |
2862 int bLength = bToIndex - bFromIndex; |
2840 int bLength = bToIndex - bFromIndex; |
2863 if (aLength != bLength) |
2841 if (aLength != bLength) |
2864 return false; |
2842 return false; |
2865 |
2843 |
2866 for (int i = 0; i < aLength; i++) |
2844 return ArraysSupport.mismatch(a, aFromIndex, |
2867 if (a[aFromIndex++] != b[bFromIndex++]) |
2845 b, bFromIndex, |
2868 return false; |
2846 aLength) < 0; |
2869 |
|
2870 return true; |
|
2871 } |
2847 } |
2872 |
2848 |
2873 /** |
2849 /** |
2874 * Returns {@code true} if the two specified arrays of bytes are |
2850 * Returns {@code true} if the two specified arrays of bytes are |
2875 * <i>equal</i> to one another. Two arrays are considered equal if both |
2851 * <i>equal</i> to one another. Two arrays are considered equal if both |
2891 |
2867 |
2892 int length = a.length; |
2868 int length = a.length; |
2893 if (a2.length != length) |
2869 if (a2.length != length) |
2894 return false; |
2870 return false; |
2895 |
2871 |
2896 for (int i=0; i<length; i++) |
2872 return ArraysSupport.mismatch(a, a2, length) < 0; |
2897 if (a[i] != a2[i]) |
|
2898 return false; |
|
2899 |
|
2900 return true; |
|
2901 } |
2873 } |
2902 |
2874 |
2903 /** |
2875 /** |
2904 * Returns true if the two specified arrays of bytes, over the specified |
2876 * Returns true if the two specified arrays of bytes, over the specified |
2905 * ranges, are <i>equal</i> to one another. |
2877 * ranges, are <i>equal</i> to one another. |
2940 int aLength = aToIndex - aFromIndex; |
2912 int aLength = aToIndex - aFromIndex; |
2941 int bLength = bToIndex - bFromIndex; |
2913 int bLength = bToIndex - bFromIndex; |
2942 if (aLength != bLength) |
2914 if (aLength != bLength) |
2943 return false; |
2915 return false; |
2944 |
2916 |
2945 for (int i = 0; i < aLength; i++) |
2917 return ArraysSupport.mismatch(a, aFromIndex, |
2946 if (a[aFromIndex++] != b[bFromIndex++]) |
2918 b, bFromIndex, |
2947 return false; |
2919 aLength) < 0; |
2948 |
|
2949 return true; |
|
2950 } |
2920 } |
2951 |
2921 |
2952 /** |
2922 /** |
2953 * Returns {@code true} if the two specified arrays of booleans are |
2923 * Returns {@code true} if the two specified arrays of booleans are |
2954 * <i>equal</i> to one another. Two arrays are considered equal if both |
2924 * <i>equal</i> to one another. Two arrays are considered equal if both |
2969 |
2939 |
2970 int length = a.length; |
2940 int length = a.length; |
2971 if (a2.length != length) |
2941 if (a2.length != length) |
2972 return false; |
2942 return false; |
2973 |
2943 |
2974 for (int i=0; i<length; i++) |
2944 return ArraysSupport.mismatch(a, a2, length) < 0; |
2975 if (a[i] != a2[i]) |
|
2976 return false; |
|
2977 |
|
2978 return true; |
|
2979 } |
2945 } |
2980 |
2946 |
2981 /** |
2947 /** |
2982 * Returns true if the two specified arrays of booleans, over the specified |
2948 * Returns true if the two specified arrays of booleans, over the specified |
2983 * ranges, are <i>equal</i> to one another. |
2949 * ranges, are <i>equal</i> to one another. |
3018 int aLength = aToIndex - aFromIndex; |
2984 int aLength = aToIndex - aFromIndex; |
3019 int bLength = bToIndex - bFromIndex; |
2985 int bLength = bToIndex - bFromIndex; |
3020 if (aLength != bLength) |
2986 if (aLength != bLength) |
3021 return false; |
2987 return false; |
3022 |
2988 |
3023 for (int i = 0; i < aLength; i++) |
2989 return ArraysSupport.mismatch(a, aFromIndex, |
3024 if (a[aFromIndex++] != b[bFromIndex++]) |
2990 b, bFromIndex, |
3025 return false; |
2991 aLength) < 0; |
3026 |
|
3027 return true; |
|
3028 } |
2992 } |
3029 |
2993 |
3030 /** |
2994 /** |
3031 * Returns {@code true} if the two specified arrays of doubles are |
2995 * Returns {@code true} if the two specified arrays of doubles are |
3032 * <i>equal</i> to one another. Two arrays are considered equal if both |
2996 * <i>equal</i> to one another. Two arrays are considered equal if both |
3053 |
3017 |
3054 int length = a.length; |
3018 int length = a.length; |
3055 if (a2.length != length) |
3019 if (a2.length != length) |
3056 return false; |
3020 return false; |
3057 |
3021 |
3058 for (int i=0; i<length; i++) { |
3022 return ArraysSupport.mismatch(a, a2, length) < 0; |
3059 double v1 = a[i], v2 = a2[i]; |
|
3060 if (Double.doubleToRawLongBits(v1) != Double.doubleToRawLongBits(v2)) |
|
3061 if (!Double.isNaN(v1) || !Double.isNaN(v2)) |
|
3062 return false; |
|
3063 } |
|
3064 |
|
3065 return true; |
|
3066 } |
3023 } |
3067 |
3024 |
3068 /** |
3025 /** |
3069 * Returns true if the two specified arrays of doubles, over the specified |
3026 * Returns true if the two specified arrays of doubles, over the specified |
3070 * ranges, are <i>equal</i> to one another. |
3027 * ranges, are <i>equal</i> to one another. |
3111 int aLength = aToIndex - aFromIndex; |
3068 int aLength = aToIndex - aFromIndex; |
3112 int bLength = bToIndex - bFromIndex; |
3069 int bLength = bToIndex - bFromIndex; |
3113 if (aLength != bLength) |
3070 if (aLength != bLength) |
3114 return false; |
3071 return false; |
3115 |
3072 |
3116 for (int i = 0; i < aLength; i++) { |
3073 return ArraysSupport.mismatch(a, aFromIndex, |
3117 Double va = a[aFromIndex++], vb = b[bFromIndex++]; |
3074 b, bFromIndex, aLength) < 0; |
3118 if (Double.doubleToRawLongBits(va) != Double.doubleToRawLongBits(vb)) |
|
3119 if (!Double.isNaN(va) || !Double.isNaN(vb)) |
|
3120 return false; |
|
3121 } |
|
3122 |
|
3123 return true; |
|
3124 } |
3075 } |
3125 |
3076 |
3126 /** |
3077 /** |
3127 * Returns {@code true} if the two specified arrays of floats are |
3078 * Returns {@code true} if the two specified arrays of floats are |
3128 * <i>equal</i> to one another. Two arrays are considered equal if both |
3079 * <i>equal</i> to one another. Two arrays are considered equal if both |
3149 |
3100 |
3150 int length = a.length; |
3101 int length = a.length; |
3151 if (a2.length != length) |
3102 if (a2.length != length) |
3152 return false; |
3103 return false; |
3153 |
3104 |
3154 for (int i=0; i<length; i++) { |
3105 return ArraysSupport.mismatch(a, a2, length) < 0; |
3155 float v1 = a[i], v2 = a2[i]; |
|
3156 if (Float.floatToRawIntBits(v1) != Float.floatToRawIntBits(v2)) |
|
3157 if (!Float.isNaN(v1) || !Float.isNaN(v2)) |
|
3158 return false; |
|
3159 } |
|
3160 |
|
3161 return true; |
|
3162 } |
3106 } |
3163 |
3107 |
3164 /** |
3108 /** |
3165 * Returns true if the two specified arrays of floats, over the specified |
3109 * Returns true if the two specified arrays of floats, over the specified |
3166 * ranges, are <i>equal</i> to one another. |
3110 * ranges, are <i>equal</i> to one another. |
3207 int aLength = aToIndex - aFromIndex; |
3151 int aLength = aToIndex - aFromIndex; |
3208 int bLength = bToIndex - bFromIndex; |
3152 int bLength = bToIndex - bFromIndex; |
3209 if (aLength != bLength) |
3153 if (aLength != bLength) |
3210 return false; |
3154 return false; |
3211 |
3155 |
3212 for (int i = 0; i < aLength; i++) { |
3156 return ArraysSupport.mismatch(a, aFromIndex, |
3213 float va = a[aFromIndex++], vb = b[bFromIndex++]; |
3157 b, bFromIndex, aLength) < 0; |
3214 if (Float.floatToRawIntBits(va) != Float.floatToRawIntBits(vb)) |
|
3215 if (!Float.isNaN(va) || !Float.isNaN(vb)) |
|
3216 return false; |
|
3217 } |
|
3218 |
|
3219 return true; |
|
3220 } |
3158 } |
3221 |
3159 |
3222 /** |
3160 /** |
3223 * Returns {@code true} if the two specified arrays of Objects are |
3161 * Returns {@code true} if the two specified arrays of Objects are |
3224 * <i>equal</i> to one another. The two arrays are considered equal if |
3162 * <i>equal</i> to one another. The two arrays are considered equal if |
5802 if (a == b) |
5740 if (a == b) |
5803 return 0; |
5741 return 0; |
5804 if (a == null || b == null) |
5742 if (a == null || b == null) |
5805 return a == null ? -1 : 1; |
5743 return a == null ? -1 : 1; |
5806 |
5744 |
5807 int length = Math.min(a.length, b.length); |
5745 int i = ArraysSupport.mismatch(a, b, |
5808 for (int i = 0; i < length; i++) { |
5746 Math.min(a.length, b.length)); |
5809 if (a[i] != b[i]) return Boolean.compare(a[i], b[i]); |
5747 if (i >= 0) { |
|
5748 return Boolean.compare(a[i], b[i]); |
5810 } |
5749 } |
5811 |
5750 |
5812 return a.length - b.length; |
5751 return a.length - b.length; |
5813 } |
5752 } |
5814 |
5753 |
5878 rangeCheck(a.length, aFromIndex, aToIndex); |
5817 rangeCheck(a.length, aFromIndex, aToIndex); |
5879 rangeCheck(b.length, bFromIndex, bToIndex); |
5818 rangeCheck(b.length, bFromIndex, bToIndex); |
5880 |
5819 |
5881 int aLength = aToIndex - aFromIndex; |
5820 int aLength = aToIndex - aFromIndex; |
5882 int bLength = bToIndex - bFromIndex; |
5821 int bLength = bToIndex - bFromIndex; |
5883 int length = Math.min(aLength, bLength); |
5822 int i = ArraysSupport.mismatch(a, aFromIndex, |
5884 for (int i = 0; i < length; i++) { |
5823 b, bFromIndex, |
5885 boolean va = a[aFromIndex++]; |
5824 Math.min(aLength, bLength)); |
5886 boolean vb = b[bFromIndex++]; |
5825 if (i >= 0) { |
5887 if (va != vb) return Boolean.compare(va, vb); |
5826 return Boolean.compare(a[aFromIndex + i], b[bFromIndex + i]); |
5888 } |
5827 } |
5889 |
5828 |
5890 return aLength - bLength; |
5829 return aLength - bLength; |
5891 } |
5830 } |
5892 |
5831 |
5937 if (a == b) |
5876 if (a == b) |
5938 return 0; |
5877 return 0; |
5939 if (a == null || b == null) |
5878 if (a == null || b == null) |
5940 return a == null ? -1 : 1; |
5879 return a == null ? -1 : 1; |
5941 |
5880 |
5942 int length = Math.min(a.length, b.length); |
5881 int i = ArraysSupport.mismatch(a, b, |
5943 for (int i = 0; i < length; i++) { |
5882 Math.min(a.length, b.length)); |
5944 if (a[i] != b[i]) return Byte.compare(a[i], b[i]); |
5883 if (i >= 0) { |
|
5884 return Byte.compare(a[i], b[i]); |
5945 } |
5885 } |
5946 |
5886 |
5947 return a.length - b.length; |
5887 return a.length - b.length; |
5948 } |
5888 } |
5949 |
5889 |
6012 rangeCheck(a.length, aFromIndex, aToIndex); |
5952 rangeCheck(a.length, aFromIndex, aToIndex); |
6013 rangeCheck(b.length, bFromIndex, bToIndex); |
5953 rangeCheck(b.length, bFromIndex, bToIndex); |
6014 |
5954 |
6015 int aLength = aToIndex - aFromIndex; |
5955 int aLength = aToIndex - aFromIndex; |
6016 int bLength = bToIndex - bFromIndex; |
5956 int bLength = bToIndex - bFromIndex; |
6017 int length = Math.min(aLength, bLength); |
5957 int i = ArraysSupport.mismatch(a, aFromIndex, |
6018 for (int i = 0; i < length; i++) { |
5958 b, bFromIndex, |
6019 byte va = a[aFromIndex++]; |
5959 Math.min(aLength, bLength)); |
6020 byte vb = b[bFromIndex++]; |
5960 if (i >= 0) { |
6021 if (va != vb) return Byte.compare(va, vb); |
5961 return Byte.compare(a[aFromIndex + i], b[bFromIndex + i]); |
6022 } |
5962 } |
6023 |
5963 |
6024 return aLength - bLength; |
5964 return aLength - bLength; |
6025 } |
5965 } |
6026 |
5966 |
6064 if (a == b) |
6004 if (a == b) |
6065 return 0; |
6005 return 0; |
6066 if (a == null || b == null) |
6006 if (a == null || b == null) |
6067 return a == null ? -1 : 1; |
6007 return a == null ? -1 : 1; |
6068 |
6008 |
6069 int length = Math.min(a.length, b.length); |
6009 int i = ArraysSupport.mismatch(a, b, |
6070 for (int i = 0; i < length; i++) { |
6010 Math.min(a.length, b.length)); |
6071 if (a[i] != b[i]) return Byte.compareUnsigned(a[i], b[i]); |
6011 if (i >= 0) { |
|
6012 return Byte.compareUnsigned(a[i], b[i]); |
6072 } |
6013 } |
6073 |
6014 |
6074 return a.length - b.length; |
6015 return a.length - b.length; |
6075 } |
6016 } |
6076 |
6017 |
6131 rangeCheck(a.length, aFromIndex, aToIndex); |
6072 rangeCheck(a.length, aFromIndex, aToIndex); |
6132 rangeCheck(b.length, bFromIndex, bToIndex); |
6073 rangeCheck(b.length, bFromIndex, bToIndex); |
6133 |
6074 |
6134 int aLength = aToIndex - aFromIndex; |
6075 int aLength = aToIndex - aFromIndex; |
6135 int bLength = bToIndex - bFromIndex; |
6076 int bLength = bToIndex - bFromIndex; |
6136 int length = Math.min(aLength, bLength); |
6077 int i = ArraysSupport.mismatch(a, aFromIndex, |
6137 for (int i = 0; i < length; i++) { |
6078 b, bFromIndex, |
6138 byte va = a[aFromIndex++]; |
6079 Math.min(aLength, bLength)); |
6139 byte vb = b[bFromIndex++]; |
6080 if (i >= 0) { |
6140 if (va != vb) return Byte.compareUnsigned(va, vb); |
6081 return Byte.compareUnsigned(a[aFromIndex + i], b[bFromIndex + i]); |
6141 } |
6082 } |
6142 |
6083 |
6143 return aLength - bLength; |
6084 return aLength - bLength; |
6144 } |
6085 } |
6145 |
6086 |
6190 if (a == b) |
6131 if (a == b) |
6191 return 0; |
6132 return 0; |
6192 if (a == null || b == null) |
6133 if (a == null || b == null) |
6193 return a == null ? -1 : 1; |
6134 return a == null ? -1 : 1; |
6194 |
6135 |
6195 int length = Math.min(a.length, b.length); |
6136 int i = ArraysSupport.mismatch(a, b, |
6196 for (int i = 0; i < length; i++) { |
6137 Math.min(a.length, b.length)); |
6197 if (a[i] != b[i]) return Short.compare(a[i], b[i]); |
6138 if (i >= 0) { |
|
6139 return Short.compare(a[i], b[i]); |
6198 } |
6140 } |
6199 |
6141 |
6200 return a.length - b.length; |
6142 return a.length - b.length; |
6201 } |
6143 } |
6202 |
6144 |
6265 rangeCheck(a.length, aFromIndex, aToIndex); |
6207 rangeCheck(a.length, aFromIndex, aToIndex); |
6266 rangeCheck(b.length, bFromIndex, bToIndex); |
6208 rangeCheck(b.length, bFromIndex, bToIndex); |
6267 |
6209 |
6268 int aLength = aToIndex - aFromIndex; |
6210 int aLength = aToIndex - aFromIndex; |
6269 int bLength = bToIndex - bFromIndex; |
6211 int bLength = bToIndex - bFromIndex; |
6270 int length = Math.min(aLength, bLength); |
6212 int i = ArraysSupport.mismatch(a, aFromIndex, |
6271 for (int i = 0; i < length; i++) { |
6213 b, bFromIndex, |
6272 short va = a[aFromIndex++]; |
6214 Math.min(aLength, bLength)); |
6273 short vb = b[bFromIndex++]; |
6215 if (i >= 0) { |
6274 if (va != vb) return Short.compare(va, vb); |
6216 return Short.compare(a[aFromIndex + i], b[bFromIndex + i]); |
6275 } |
6217 } |
6276 |
6218 |
6277 return aLength - bLength; |
6219 return aLength - bLength; |
6278 } |
6220 } |
6279 |
6221 |
6317 if (a == b) |
6259 if (a == b) |
6318 return 0; |
6260 return 0; |
6319 if (a == null || b == null) |
6261 if (a == null || b == null) |
6320 return a == null ? -1 : 1; |
6262 return a == null ? -1 : 1; |
6321 |
6263 |
6322 int length = Math.min(a.length, b.length); |
6264 int i = ArraysSupport.mismatch(a, b, |
6323 for (int i = 0; i < length; i++) { |
6265 Math.min(a.length, b.length)); |
6324 if (a[i] != b[i]) return Short.compareUnsigned(a[i], b[i]); |
6266 if (i >= 0) { |
|
6267 return Short.compareUnsigned(a[i], b[i]); |
6325 } |
6268 } |
6326 |
6269 |
6327 return a.length - b.length; |
6270 return a.length - b.length; |
6328 } |
6271 } |
6329 |
6272 |
6383 rangeCheck(a.length, aFromIndex, aToIndex); |
6326 rangeCheck(a.length, aFromIndex, aToIndex); |
6384 rangeCheck(b.length, bFromIndex, bToIndex); |
6327 rangeCheck(b.length, bFromIndex, bToIndex); |
6385 |
6328 |
6386 int aLength = aToIndex - aFromIndex; |
6329 int aLength = aToIndex - aFromIndex; |
6387 int bLength = bToIndex - bFromIndex; |
6330 int bLength = bToIndex - bFromIndex; |
6388 int length = Math.min(aLength, bLength); |
6331 int i = ArraysSupport.mismatch(a, aFromIndex, |
6389 for (int i = 0; i < length; i++) { |
6332 b, bFromIndex, |
6390 short va = a[aFromIndex++]; |
6333 Math.min(aLength, bLength)); |
6391 short vb = b[bFromIndex++]; |
6334 if (i >= 0) { |
6392 if (va != vb) return Short.compareUnsigned(va, vb); |
6335 return Short.compareUnsigned(a[aFromIndex + i], b[bFromIndex + i]); |
6393 } |
6336 } |
6394 |
6337 |
6395 return aLength - bLength; |
6338 return aLength - bLength; |
6396 } |
6339 } |
6397 |
6340 |
6442 if (a == b) |
6385 if (a == b) |
6443 return 0; |
6386 return 0; |
6444 if (a == null || b == null) |
6387 if (a == null || b == null) |
6445 return a == null ? -1 : 1; |
6388 return a == null ? -1 : 1; |
6446 |
6389 |
6447 int length = Math.min(a.length, b.length); |
6390 int i = ArraysSupport.mismatch(a, b, |
6448 for (int i = 0; i < length; i++) { |
6391 Math.min(a.length, b.length)); |
6449 if (a[i] != b[i]) return Character.compare(a[i], b[i]); |
6392 if (i >= 0) { |
|
6393 return Character.compare(a[i], b[i]); |
6450 } |
6394 } |
6451 |
6395 |
6452 return a.length - b.length; |
6396 return a.length - b.length; |
6453 } |
6397 } |
6454 |
6398 |
6517 rangeCheck(a.length, aFromIndex, aToIndex); |
6461 rangeCheck(a.length, aFromIndex, aToIndex); |
6518 rangeCheck(b.length, bFromIndex, bToIndex); |
6462 rangeCheck(b.length, bFromIndex, bToIndex); |
6519 |
6463 |
6520 int aLength = aToIndex - aFromIndex; |
6464 int aLength = aToIndex - aFromIndex; |
6521 int bLength = bToIndex - bFromIndex; |
6465 int bLength = bToIndex - bFromIndex; |
6522 int length = Math.min(aLength, bLength); |
6466 int i = ArraysSupport.mismatch(a, aFromIndex, |
6523 for (int i = 0; i < length; i++) { |
6467 b, bFromIndex, |
6524 char va = a[aFromIndex++]; |
6468 Math.min(aLength, bLength)); |
6525 char vb = b[bFromIndex++]; |
6469 if (i >= 0) { |
6526 if (va != vb) return Character.compare(va, vb); |
6470 return Character.compare(a[aFromIndex + i], b[bFromIndex + i]); |
6527 } |
6471 } |
6528 |
6472 |
6529 return aLength - bLength; |
6473 return aLength - bLength; |
6530 } |
6474 } |
6531 |
6475 |
6576 if (a == b) |
6520 if (a == b) |
6577 return 0; |
6521 return 0; |
6578 if (a == null || b == null) |
6522 if (a == null || b == null) |
6579 return a == null ? -1 : 1; |
6523 return a == null ? -1 : 1; |
6580 |
6524 |
6581 int length = Math.min(a.length, b.length); |
6525 int i = ArraysSupport.mismatch(a, b, |
6582 for (int i = 0; i < length; i++) { |
6526 Math.min(a.length, b.length)); |
6583 if (a[i] != b[i]) return Integer.compare(a[i], b[i]); |
6527 if (i >= 0) { |
|
6528 return Integer.compare(a[i], b[i]); |
6584 } |
6529 } |
6585 |
6530 |
6586 return a.length - b.length; |
6531 return a.length - b.length; |
6587 } |
6532 } |
6588 |
6533 |
6651 rangeCheck(a.length, aFromIndex, aToIndex); |
6596 rangeCheck(a.length, aFromIndex, aToIndex); |
6652 rangeCheck(b.length, bFromIndex, bToIndex); |
6597 rangeCheck(b.length, bFromIndex, bToIndex); |
6653 |
6598 |
6654 int aLength = aToIndex - aFromIndex; |
6599 int aLength = aToIndex - aFromIndex; |
6655 int bLength = bToIndex - bFromIndex; |
6600 int bLength = bToIndex - bFromIndex; |
6656 int length = Math.min(aLength, bLength); |
6601 int i = ArraysSupport.mismatch(a, aFromIndex, |
6657 for (int i = 0; i < length; i++) { |
6602 b, bFromIndex, |
6658 int va = a[aFromIndex++]; |
6603 Math.min(aLength, bLength)); |
6659 int vb = b[bFromIndex++]; |
6604 if (i >= 0) { |
6660 if (va != vb) return Integer.compare(va, vb); |
6605 return Integer.compare(a[aFromIndex + i], b[bFromIndex + i]); |
6661 } |
6606 } |
6662 |
6607 |
6663 return aLength - bLength; |
6608 return aLength - bLength; |
6664 } |
6609 } |
6665 |
6610 |
6703 if (a == b) |
6648 if (a == b) |
6704 return 0; |
6649 return 0; |
6705 if (a == null || b == null) |
6650 if (a == null || b == null) |
6706 return a == null ? -1 : 1; |
6651 return a == null ? -1 : 1; |
6707 |
6652 |
6708 int length = Math.min(a.length, b.length); |
6653 int i = ArraysSupport.mismatch(a, b, |
6709 for (int i = 0; i < length; i++) { |
6654 Math.min(a.length, b.length)); |
6710 if (a[i] != b[i]) return Integer.compareUnsigned(a[i], b[i]); |
6655 if (i >= 0) { |
|
6656 return Integer.compareUnsigned(a[i], b[i]); |
6711 } |
6657 } |
6712 |
6658 |
6713 return a.length - b.length; |
6659 return a.length - b.length; |
6714 } |
6660 } |
6715 |
6661 |
6769 rangeCheck(a.length, aFromIndex, aToIndex); |
6715 rangeCheck(a.length, aFromIndex, aToIndex); |
6770 rangeCheck(b.length, bFromIndex, bToIndex); |
6716 rangeCheck(b.length, bFromIndex, bToIndex); |
6771 |
6717 |
6772 int aLength = aToIndex - aFromIndex; |
6718 int aLength = aToIndex - aFromIndex; |
6773 int bLength = bToIndex - bFromIndex; |
6719 int bLength = bToIndex - bFromIndex; |
6774 int length = Math.min(aLength, bLength); |
6720 int i = ArraysSupport.mismatch(a, aFromIndex, |
6775 for (int i = 0; i < length; i++) { |
6721 b, bFromIndex, |
6776 int va = a[aFromIndex++]; |
6722 Math.min(aLength, bLength)); |
6777 int vb = b[bFromIndex++]; |
6723 if (i >= 0) { |
6778 if (va != vb) return Integer.compareUnsigned(va, vb); |
6724 return Integer.compareUnsigned(a[aFromIndex + i], b[bFromIndex + i]); |
6779 } |
6725 } |
6780 |
6726 |
6781 return aLength - bLength; |
6727 return aLength - bLength; |
6782 } |
6728 } |
6783 |
6729 |
6828 if (a == b) |
6774 if (a == b) |
6829 return 0; |
6775 return 0; |
6830 if (a == null || b == null) |
6776 if (a == null || b == null) |
6831 return a == null ? -1 : 1; |
6777 return a == null ? -1 : 1; |
6832 |
6778 |
6833 int length = Math.min(a.length, b.length); |
6779 int i = ArraysSupport.mismatch(a, b, |
6834 for (int i = 0; i < length; i++) { |
6780 Math.min(a.length, b.length)); |
6835 if (a[i] != b[i]) return Long.compare(a[i], b[i]); |
6781 if (i >= 0) { |
|
6782 return Long.compare(a[i], b[i]); |
6836 } |
6783 } |
6837 |
6784 |
6838 return a.length - b.length; |
6785 return a.length - b.length; |
6839 } |
6786 } |
6840 |
6787 |
6903 rangeCheck(a.length, aFromIndex, aToIndex); |
6850 rangeCheck(a.length, aFromIndex, aToIndex); |
6904 rangeCheck(b.length, bFromIndex, bToIndex); |
6851 rangeCheck(b.length, bFromIndex, bToIndex); |
6905 |
6852 |
6906 int aLength = aToIndex - aFromIndex; |
6853 int aLength = aToIndex - aFromIndex; |
6907 int bLength = bToIndex - bFromIndex; |
6854 int bLength = bToIndex - bFromIndex; |
6908 int length = Math.min(aLength, bLength); |
6855 int i = ArraysSupport.mismatch(a, aFromIndex, |
6909 for (int i = 0; i < length; i++) { |
6856 b, bFromIndex, |
6910 long va = a[aFromIndex++]; |
6857 Math.min(aLength, bLength)); |
6911 long vb = b[bFromIndex++]; |
6858 if (i >= 0) { |
6912 if (va != vb) return Long.compare(va, vb); |
6859 return Long.compare(a[aFromIndex + i], b[bFromIndex + i]); |
6913 } |
6860 } |
6914 |
6861 |
6915 return aLength - bLength; |
6862 return aLength - bLength; |
6916 } |
6863 } |
6917 |
6864 |
6955 if (a == b) |
6902 if (a == b) |
6956 return 0; |
6903 return 0; |
6957 if (a == null || b == null) |
6904 if (a == null || b == null) |
6958 return a == null ? -1 : 1; |
6905 return a == null ? -1 : 1; |
6959 |
6906 |
6960 int length = Math.min(a.length, b.length); |
6907 int i = ArraysSupport.mismatch(a, b, |
6961 for (int i = 0; i < length; i++) { |
6908 Math.min(a.length, b.length)); |
6962 if (a[i] != b[i]) return Long.compareUnsigned(a[i], b[i]); |
6909 if (i >= 0) { |
|
6910 return Long.compareUnsigned(a[i], b[i]); |
6963 } |
6911 } |
6964 |
6912 |
6965 return a.length - b.length; |
6913 return a.length - b.length; |
6966 } |
6914 } |
6967 |
6915 |
7021 rangeCheck(a.length, aFromIndex, aToIndex); |
6969 rangeCheck(a.length, aFromIndex, aToIndex); |
7022 rangeCheck(b.length, bFromIndex, bToIndex); |
6970 rangeCheck(b.length, bFromIndex, bToIndex); |
7023 |
6971 |
7024 int aLength = aToIndex - aFromIndex; |
6972 int aLength = aToIndex - aFromIndex; |
7025 int bLength = bToIndex - bFromIndex; |
6973 int bLength = bToIndex - bFromIndex; |
7026 int length = Math.min(aLength, bLength); |
6974 int i = ArraysSupport.mismatch(a, aFromIndex, |
7027 for (int i = 0; i < length; i++) { |
6975 b, bFromIndex, |
7028 long va = a[aFromIndex++]; |
6976 Math.min(aLength, bLength)); |
7029 long vb = b[bFromIndex++]; |
6977 if (i >= 0) { |
7030 if (va != vb) return Long.compareUnsigned(va, vb); |
6978 return Long.compareUnsigned(a[aFromIndex + i], b[bFromIndex + i]); |
7031 } |
6979 } |
7032 |
6980 |
7033 return aLength - bLength; |
6981 return aLength - bLength; |
7034 } |
6982 } |
7035 |
6983 |
7080 if (a == b) |
7028 if (a == b) |
7081 return 0; |
7029 return 0; |
7082 if (a == null || b == null) |
7030 if (a == null || b == null) |
7083 return a == null ? -1 : 1; |
7031 return a == null ? -1 : 1; |
7084 |
7032 |
7085 int length = Math.min(a.length, b.length); |
7033 int i = ArraysSupport.mismatch(a, b, |
7086 for (int i = 0; i < length; i++) { |
7034 Math.min(a.length, b.length)); |
7087 float va = a[i], vb = b[i]; |
7035 if (i >= 0) { |
7088 if (Float.floatToRawIntBits(va) != Float.floatToRawIntBits(vb)) { |
7036 return Float.compare(a[i], b[i]); |
7089 int c = Float.compare(va, vb); |
|
7090 if (c != 0) return c; |
|
7091 } |
|
7092 } |
7037 } |
7093 |
7038 |
7094 return a.length - b.length; |
7039 return a.length - b.length; |
7095 } |
7040 } |
7096 |
7041 |
7159 rangeCheck(a.length, aFromIndex, aToIndex); |
7104 rangeCheck(a.length, aFromIndex, aToIndex); |
7160 rangeCheck(b.length, bFromIndex, bToIndex); |
7105 rangeCheck(b.length, bFromIndex, bToIndex); |
7161 |
7106 |
7162 int aLength = aToIndex - aFromIndex; |
7107 int aLength = aToIndex - aFromIndex; |
7163 int bLength = bToIndex - bFromIndex; |
7108 int bLength = bToIndex - bFromIndex; |
7164 int length = Math.min(aLength, bLength); |
7109 int i = ArraysSupport.mismatch(a, aFromIndex, |
7165 for (int i = 0; i < length; i++) { |
7110 b, bFromIndex, |
7166 float va = a[aFromIndex++], vb = b[bFromIndex++]; |
7111 Math.min(aLength, bLength)); |
7167 if (Float.floatToRawIntBits(va) != Float.floatToRawIntBits(vb)) { |
7112 if (i >= 0) { |
7168 int c = Float.compare(va, vb); |
7113 return Float.compare(a[aFromIndex + i], b[bFromIndex + i]); |
7169 if (c != 0) return c; |
|
7170 } |
|
7171 } |
7114 } |
7172 |
7115 |
7173 return aLength - bLength; |
7116 return aLength - bLength; |
7174 } |
7117 } |
7175 |
7118 |
7220 if (a == b) |
7163 if (a == b) |
7221 return 0; |
7164 return 0; |
7222 if (a == null || b == null) |
7165 if (a == null || b == null) |
7223 return a == null ? -1 : 1; |
7166 return a == null ? -1 : 1; |
7224 |
7167 |
7225 int length = Math.min(a.length, b.length); |
7168 int i = ArraysSupport.mismatch(a, b, |
7226 for (int i = 0; i < length; i++) { |
7169 Math.min(a.length, b.length)); |
7227 double va = a[i], vb = b[i]; |
7170 if (i >= 0) { |
7228 if (Double.doubleToRawLongBits(va) != Double.doubleToRawLongBits(vb)) { |
7171 return Double.compare(a[i], b[i]); |
7229 int c = Double.compare(va, vb); |
|
7230 if (c != 0) return c; |
|
7231 } |
|
7232 } |
7172 } |
7233 |
7173 |
7234 return a.length - b.length; |
7174 return a.length - b.length; |
7235 } |
7175 } |
7236 |
7176 |
7299 rangeCheck(a.length, aFromIndex, aToIndex); |
7239 rangeCheck(a.length, aFromIndex, aToIndex); |
7300 rangeCheck(b.length, bFromIndex, bToIndex); |
7240 rangeCheck(b.length, bFromIndex, bToIndex); |
7301 |
7241 |
7302 int aLength = aToIndex - aFromIndex; |
7242 int aLength = aToIndex - aFromIndex; |
7303 int bLength = bToIndex - bFromIndex; |
7243 int bLength = bToIndex - bFromIndex; |
7304 int length = Math.min(aLength, bLength); |
7244 int i = ArraysSupport.mismatch(a, aFromIndex, |
7305 for (int i = 0; i < length; i++) { |
7245 b, bFromIndex, |
7306 double va = a[aFromIndex++], vb = b[bFromIndex++]; |
7246 Math.min(aLength, bLength)); |
7307 if (Double.doubleToRawLongBits(va) != Double.doubleToRawLongBits(vb)) { |
7247 if (i >= 0) { |
7308 int c = Double.compare(va, vb); |
7248 return Double.compare(a[aFromIndex + i], b[bFromIndex + i]); |
7309 if (c != 0) return c; |
|
7310 } |
|
7311 } |
7249 } |
7312 |
7250 |
7313 return aLength - bLength; |
7251 return aLength - bLength; |
7314 } |
7252 } |
7315 |
7253 |
7671 public static int mismatch(boolean[] a, boolean[] b) { |
7609 public static int mismatch(boolean[] a, boolean[] b) { |
7672 int length = Math.min(a.length, b.length); // Check null array refs |
7610 int length = Math.min(a.length, b.length); // Check null array refs |
7673 if (a == b) |
7611 if (a == b) |
7674 return -1; |
7612 return -1; |
7675 |
7613 |
7676 for (int i = 0; i < length; i++) { |
7614 int i = ArraysSupport.mismatch(a, b, length); |
7677 if (a[i] != b[i]) return i; |
7615 return (i < 0 && a.length != b.length) ? length : i; |
7678 } |
|
7679 |
|
7680 return a.length != b.length ? length : -1; |
|
7681 } |
7616 } |
7682 |
7617 |
7683 /** |
7618 /** |
7684 * Finds and returns the relative index of the first mismatch between two |
7619 * Finds and returns the relative index of the first mismatch between two |
7685 * {@code boolean} arrays over the specified ranges, otherwise return -1 if |
7620 * {@code boolean} arrays over the specified ranges, otherwise return -1 if |
7747 rangeCheck(b.length, bFromIndex, bToIndex); |
7682 rangeCheck(b.length, bFromIndex, bToIndex); |
7748 |
7683 |
7749 int aLength = aToIndex - aFromIndex; |
7684 int aLength = aToIndex - aFromIndex; |
7750 int bLength = bToIndex - bFromIndex; |
7685 int bLength = bToIndex - bFromIndex; |
7751 int length = Math.min(aLength, bLength); |
7686 int length = Math.min(aLength, bLength); |
7752 for (int i = 0; i < length; i++) { |
7687 int i = ArraysSupport.mismatch(a, aFromIndex, |
7753 if (a[aFromIndex++] != b[bFromIndex++]) return i; |
7688 b, bFromIndex, |
7754 } |
7689 length); |
7755 |
7690 return (i < 0 && aLength != bLength) ? length : i; |
7756 return aLength != bLength ? length : -1; |
|
7757 } |
7691 } |
7758 |
7692 |
7759 // Mismatch byte |
7693 // Mismatch byte |
7760 |
7694 |
7761 /** |
7695 /** |
7802 public static int mismatch(byte[] a, byte[] b) { |
7736 public static int mismatch(byte[] a, byte[] b) { |
7803 int length = Math.min(a.length, b.length); // Check null array refs |
7737 int length = Math.min(a.length, b.length); // Check null array refs |
7804 if (a == b) |
7738 if (a == b) |
7805 return -1; |
7739 return -1; |
7806 |
7740 |
7807 for (int i = 0; i < length; i++) { |
7741 int i = ArraysSupport.mismatch(a, b, length); |
7808 if (a[i] != b[i]) return i; |
7742 return (i < 0 && a.length != b.length) ? length : i; |
7809 } |
|
7810 |
|
7811 return a.length != b.length ? length : -1; |
|
7812 } |
7743 } |
7813 |
7744 |
7814 /** |
7745 /** |
7815 * Finds and returns the relative index of the first mismatch between two |
7746 * Finds and returns the relative index of the first mismatch between two |
7816 * {@code byte} arrays over the specified ranges, otherwise return -1 if no |
7747 * {@code byte} arrays over the specified ranges, otherwise return -1 if no |
7878 rangeCheck(b.length, bFromIndex, bToIndex); |
7809 rangeCheck(b.length, bFromIndex, bToIndex); |
7879 |
7810 |
7880 int aLength = aToIndex - aFromIndex; |
7811 int aLength = aToIndex - aFromIndex; |
7881 int bLength = bToIndex - bFromIndex; |
7812 int bLength = bToIndex - bFromIndex; |
7882 int length = Math.min(aLength, bLength); |
7813 int length = Math.min(aLength, bLength); |
7883 for (int i = 0; i < length; i++) { |
7814 int i = ArraysSupport.mismatch(a, aFromIndex, |
7884 if (a[aFromIndex++] != b[bFromIndex++]) return i; |
7815 b, bFromIndex, |
7885 } |
7816 length); |
7886 |
7817 return (i < 0 && aLength != bLength) ? length : i; |
7887 return aLength != bLength ? length : -1; |
|
7888 } |
7818 } |
7889 |
7819 |
7890 // Mismatch char |
7820 // Mismatch char |
7891 |
7821 |
7892 /** |
7822 /** |
7933 public static int mismatch(char[] a, char[] b) { |
7863 public static int mismatch(char[] a, char[] b) { |
7934 int length = Math.min(a.length, b.length); // Check null array refs |
7864 int length = Math.min(a.length, b.length); // Check null array refs |
7935 if (a == b) |
7865 if (a == b) |
7936 return -1; |
7866 return -1; |
7937 |
7867 |
7938 for (int i = 0; i < length; i++) { |
7868 int i = ArraysSupport.mismatch(a, b, length); |
7939 if (a[i] != b[i]) return i; |
7869 return (i < 0 && a.length != b.length) ? length : i; |
7940 } |
|
7941 |
|
7942 return a.length != b.length ? length : -1; |
|
7943 } |
7870 } |
7944 |
7871 |
7945 /** |
7872 /** |
7946 * Finds and returns the relative index of the first mismatch between two |
7873 * Finds and returns the relative index of the first mismatch between two |
7947 * {@code char} arrays over the specified ranges, otherwise return -1 if no |
7874 * {@code char} arrays over the specified ranges, otherwise return -1 if no |
8009 rangeCheck(b.length, bFromIndex, bToIndex); |
7936 rangeCheck(b.length, bFromIndex, bToIndex); |
8010 |
7937 |
8011 int aLength = aToIndex - aFromIndex; |
7938 int aLength = aToIndex - aFromIndex; |
8012 int bLength = bToIndex - bFromIndex; |
7939 int bLength = bToIndex - bFromIndex; |
8013 int length = Math.min(aLength, bLength); |
7940 int length = Math.min(aLength, bLength); |
8014 for (int i = 0; i < length; i++) { |
7941 int i = ArraysSupport.mismatch(a, aFromIndex, |
8015 if (a[aFromIndex++] != b[bFromIndex++]) return i; |
7942 b, bFromIndex, |
8016 } |
7943 length); |
8017 |
7944 return (i < 0 && aLength != bLength) ? length : i; |
8018 return aLength != bLength ? length : -1; |
|
8019 } |
7945 } |
8020 |
7946 |
8021 // Mismatch short |
7947 // Mismatch short |
8022 |
7948 |
8023 /** |
7949 /** |
8064 public static int mismatch(short[] a, short[] b) { |
7990 public static int mismatch(short[] a, short[] b) { |
8065 int length = Math.min(a.length, b.length); // Check null array refs |
7991 int length = Math.min(a.length, b.length); // Check null array refs |
8066 if (a == b) |
7992 if (a == b) |
8067 return -1; |
7993 return -1; |
8068 |
7994 |
8069 for (int i = 0; i < length; i++) { |
7995 int i = ArraysSupport.mismatch(a, b, length); |
8070 if (a[i] != b[i]) return i; |
7996 return (i < 0 && a.length != b.length) ? length : i; |
8071 } |
|
8072 |
|
8073 return a.length != b.length ? length : -1; |
|
8074 } |
7997 } |
8075 |
7998 |
8076 /** |
7999 /** |
8077 * Finds and returns the relative index of the first mismatch between two |
8000 * Finds and returns the relative index of the first mismatch between two |
8078 * {@code short} arrays over the specified ranges, otherwise return -1 if no |
8001 * {@code short} arrays over the specified ranges, otherwise return -1 if no |
8140 rangeCheck(b.length, bFromIndex, bToIndex); |
8063 rangeCheck(b.length, bFromIndex, bToIndex); |
8141 |
8064 |
8142 int aLength = aToIndex - aFromIndex; |
8065 int aLength = aToIndex - aFromIndex; |
8143 int bLength = bToIndex - bFromIndex; |
8066 int bLength = bToIndex - bFromIndex; |
8144 int length = Math.min(aLength, bLength); |
8067 int length = Math.min(aLength, bLength); |
8145 for (int i = 0; i < length; i++) { |
8068 int i = ArraysSupport.mismatch(a, aFromIndex, |
8146 if (a[aFromIndex++] != b[bFromIndex++]) return i; |
8069 b, bFromIndex, |
8147 } |
8070 length); |
8148 |
8071 return (i < 0 && aLength != bLength) ? length : i; |
8149 return aLength != bLength ? length : -1; |
|
8150 } |
8072 } |
8151 |
8073 |
8152 // Mismatch int |
8074 // Mismatch int |
8153 |
8075 |
8154 /** |
8076 /** |
8195 public static int mismatch(int[] a, int[] b) { |
8117 public static int mismatch(int[] a, int[] b) { |
8196 int length = Math.min(a.length, b.length); // Check null array refs |
8118 int length = Math.min(a.length, b.length); // Check null array refs |
8197 if (a == b) |
8119 if (a == b) |
8198 return -1; |
8120 return -1; |
8199 |
8121 |
8200 for (int i = 0; i < length; i++) { |
8122 int i = ArraysSupport.mismatch(a, b, length); |
8201 if (a[i] != b[i]) return i; |
8123 return (i < 0 && a.length != b.length) ? length : i; |
8202 } |
|
8203 |
|
8204 return a.length != b.length ? length : -1; |
|
8205 } |
8124 } |
8206 |
8125 |
8207 /** |
8126 /** |
8208 * Finds and returns the relative index of the first mismatch between two |
8127 * Finds and returns the relative index of the first mismatch between two |
8209 * {@code int} arrays over the specified ranges, otherwise return -1 if no |
8128 * {@code int} arrays over the specified ranges, otherwise return -1 if no |
8271 rangeCheck(b.length, bFromIndex, bToIndex); |
8190 rangeCheck(b.length, bFromIndex, bToIndex); |
8272 |
8191 |
8273 int aLength = aToIndex - aFromIndex; |
8192 int aLength = aToIndex - aFromIndex; |
8274 int bLength = bToIndex - bFromIndex; |
8193 int bLength = bToIndex - bFromIndex; |
8275 int length = Math.min(aLength, bLength); |
8194 int length = Math.min(aLength, bLength); |
8276 for (int i = 0; i < length; i++) { |
8195 int i = ArraysSupport.mismatch(a, aFromIndex, |
8277 if (a[aFromIndex++] != b[bFromIndex++]) return i; |
8196 b, bFromIndex, |
8278 } |
8197 length); |
8279 |
8198 return (i < 0 && aLength != bLength) ? length : i; |
8280 return aLength != bLength ? length : -1; |
|
8281 } |
8199 } |
8282 |
8200 |
8283 // Mismatch long |
8201 // Mismatch long |
8284 |
8202 |
8285 /** |
8203 /** |
8326 public static int mismatch(long[] a, long[] b) { |
8244 public static int mismatch(long[] a, long[] b) { |
8327 int length = Math.min(a.length, b.length); // Check null array refs |
8245 int length = Math.min(a.length, b.length); // Check null array refs |
8328 if (a == b) |
8246 if (a == b) |
8329 return -1; |
8247 return -1; |
8330 |
8248 |
8331 for (int i = 0; i < length; i++) { |
8249 int i = ArraysSupport.mismatch(a, b, length); |
8332 if (a[i] != b[i]) return i; |
8250 return (i < 0 && a.length != b.length) ? length : i; |
8333 } |
|
8334 |
|
8335 return a.length != b.length ? length : -1; |
|
8336 } |
8251 } |
8337 |
8252 |
8338 /** |
8253 /** |
8339 * Finds and returns the relative index of the first mismatch between two |
8254 * Finds and returns the relative index of the first mismatch between two |
8340 * {@code long} arrays over the specified ranges, otherwise return -1 if no |
8255 * {@code long} arrays over the specified ranges, otherwise return -1 if no |
8402 rangeCheck(b.length, bFromIndex, bToIndex); |
8317 rangeCheck(b.length, bFromIndex, bToIndex); |
8403 |
8318 |
8404 int aLength = aToIndex - aFromIndex; |
8319 int aLength = aToIndex - aFromIndex; |
8405 int bLength = bToIndex - bFromIndex; |
8320 int bLength = bToIndex - bFromIndex; |
8406 int length = Math.min(aLength, bLength); |
8321 int length = Math.min(aLength, bLength); |
8407 for (int i = 0; i < length; i++) { |
8322 int i = ArraysSupport.mismatch(a, aFromIndex, |
8408 if (a[aFromIndex++] != b[bFromIndex++]) return i; |
8323 b, bFromIndex, |
8409 } |
8324 length); |
8410 |
8325 return (i < 0 && aLength != bLength) ? length : i; |
8411 return aLength != bLength ? length : -1; |
|
8412 } |
8326 } |
8413 |
8327 |
8414 // Mismatch float |
8328 // Mismatch float |
8415 |
8329 |
8416 /** |
8330 /** |
8457 public static int mismatch(float[] a, float[] b) { |
8371 public static int mismatch(float[] a, float[] b) { |
8458 int length = Math.min(a.length, b.length); // Check null array refs |
8372 int length = Math.min(a.length, b.length); // Check null array refs |
8459 if (a == b) |
8373 if (a == b) |
8460 return -1; |
8374 return -1; |
8461 |
8375 |
8462 for (int i = 0; i < length; i++) { |
8376 int i = ArraysSupport.mismatch(a, b, length); |
8463 float va = a[i], vb = b[i]; |
8377 return (i < 0 && a.length != b.length) ? length : i; |
8464 if (Float.floatToRawIntBits(va) != Float.floatToRawIntBits(vb)) |
|
8465 if (!Float.isNaN(va) || !Float.isNaN(vb)) |
|
8466 return i; |
|
8467 } |
|
8468 |
|
8469 return a.length != b.length ? length : -1; |
|
8470 } |
8378 } |
8471 |
8379 |
8472 /** |
8380 /** |
8473 * Finds and returns the relative index of the first mismatch between two |
8381 * Finds and returns the relative index of the first mismatch between two |
8474 * {@code float} arrays over the specified ranges, otherwise return -1 if no |
8382 * {@code float} arrays over the specified ranges, otherwise return -1 if no |
8536 rangeCheck(b.length, bFromIndex, bToIndex); |
8444 rangeCheck(b.length, bFromIndex, bToIndex); |
8537 |
8445 |
8538 int aLength = aToIndex - aFromIndex; |
8446 int aLength = aToIndex - aFromIndex; |
8539 int bLength = bToIndex - bFromIndex; |
8447 int bLength = bToIndex - bFromIndex; |
8540 int length = Math.min(aLength, bLength); |
8448 int length = Math.min(aLength, bLength); |
8541 for (int i = 0; i < length; i++) { |
8449 int i = ArraysSupport.mismatch(a, aFromIndex, |
8542 float va = a[aFromIndex++], vb = b[bFromIndex++]; |
8450 b, bFromIndex, |
8543 if (Float.floatToRawIntBits(va) != Float.floatToRawIntBits(vb)) |
8451 length); |
8544 if (!Float.isNaN(va) || !Float.isNaN(vb)) |
8452 return (i < 0 && aLength != bLength) ? length : i; |
8545 return i; |
|
8546 } |
|
8547 |
|
8548 return aLength != bLength ? length : -1; |
|
8549 } |
8453 } |
8550 |
8454 |
8551 // Mismatch double |
8455 // Mismatch double |
8552 |
8456 |
8553 /** |
8457 /** |
8594 public static int mismatch(double[] a, double[] b) { |
8498 public static int mismatch(double[] a, double[] b) { |
8595 int length = Math.min(a.length, b.length); // Check null array refs |
8499 int length = Math.min(a.length, b.length); // Check null array refs |
8596 if (a == b) |
8500 if (a == b) |
8597 return -1; |
8501 return -1; |
8598 |
8502 |
8599 for (int i = 0; i < length; i++) { |
8503 int i = ArraysSupport.mismatch(a, b, length); |
8600 double va = a[i], vb = b[i]; |
8504 return (i < 0 && a.length != b.length) ? length : i; |
8601 if (Double.doubleToRawLongBits(va) != Double.doubleToRawLongBits(vb)) |
|
8602 if (!Double.isNaN(va) || !Double.isNaN(vb)) |
|
8603 return i; |
|
8604 } |
|
8605 |
|
8606 return a.length != b.length ? length : -1; |
|
8607 } |
8505 } |
8608 |
8506 |
8609 /** |
8507 /** |
8610 * Finds and returns the relative index of the first mismatch between two |
8508 * Finds and returns the relative index of the first mismatch between two |
8611 * {@code double} arrays over the specified ranges, otherwise return -1 if |
8509 * {@code double} arrays over the specified ranges, otherwise return -1 if |
8673 rangeCheck(b.length, bFromIndex, bToIndex); |
8571 rangeCheck(b.length, bFromIndex, bToIndex); |
8674 |
8572 |
8675 int aLength = aToIndex - aFromIndex; |
8573 int aLength = aToIndex - aFromIndex; |
8676 int bLength = bToIndex - bFromIndex; |
8574 int bLength = bToIndex - bFromIndex; |
8677 int length = Math.min(aLength, bLength); |
8575 int length = Math.min(aLength, bLength); |
8678 for (int i = 0; i < length; i++) { |
8576 int i = ArraysSupport.mismatch(a, aFromIndex, |
8679 double va = a[aFromIndex++], vb = b[bFromIndex++]; |
8577 b, bFromIndex, |
8680 if (Double.doubleToRawLongBits(va) != Double.doubleToRawLongBits(vb)) |
8578 length); |
8681 if (!Double.isNaN(va) || !Double.isNaN(vb)) |
8579 return (i < 0 && aLength != bLength) ? length : i; |
8682 return i; |
|
8683 } |
|
8684 |
|
8685 return aLength != bLength ? length : -1; |
|
8686 } |
8580 } |
8687 |
8581 |
8688 // Mismatch objects |
8582 // Mismatch objects |
8689 |
8583 |
8690 /** |
8584 /** |