Strictly less than (<) comparison of two UTF8 sequences in lexicographical order. For example, for: l = aaaaa r = aaaaaaa the l < r will produce "true", however for: l = bbbb r = aaaaaaa the l < r will produce "false", because b < a. @param l left sequence, can be null @param r right se
(@Nullable Utf8Sequence l, @Nullable Utf8Sequence r)
| 915 | * @return if either l or r is "null", the return value false, otherwise sequences are compared lexicographically. |
| 916 | */ |
| 917 | public static boolean lessThan(@Nullable Utf8Sequence l, @Nullable Utf8Sequence r) { |
| 918 | if (l == null || r == null) { |
| 919 | return false; |
| 920 | } |
| 921 | |
| 922 | final int ll = l.size(); |
| 923 | final int rl = r.size(); |
| 924 | final int min = Math.min(ll, rl); |
| 925 | for (int i = 0; i < min; i++) { |
| 926 | final int k = Numbers.compareUnsigned(l.byteAt(i), r.byteAt(i)); |
| 927 | if (k != 0) { |
| 928 | return k < 0; |
| 929 | } |
| 930 | } |
| 931 | return ll < rl; |
| 932 | } |
| 933 | |
| 934 | public static boolean lessThan(@Nullable Utf8Sequence l, @Nullable Utf8Sequence r, boolean negated) { |
| 935 | final boolean eq = Utf8s.equals(l, r); |