From 8e3ac79ecb86d02c65a8c643cca4f75b012eed56 Mon Sep 17 00:00:00 2001 From: Looly Date: Mon, 9 Sep 2024 21:30:57 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8DArrayUtil.lastIndexOfSub?= =?UTF-8?q?=E6=AD=BB=E5=BE=AA=E7=8E=AF=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/cn/hutool/core/util/ArrayUtil.java | 18 ++++++------------ 1 file changed, 6 insertions(+), 12 deletions(-) diff --git a/hutool-core/src/main/java/cn/hutool/core/util/ArrayUtil.java b/hutool-core/src/main/java/cn/hutool/core/util/ArrayUtil.java index d7a249ced..3d99c01d4 100755 --- a/hutool-core/src/main/java/cn/hutool/core/util/ArrayUtil.java +++ b/hutool-core/src/main/java/cn/hutool/core/util/ArrayUtil.java @@ -1886,24 +1886,18 @@ public class ArrayUtil extends PrimitiveArrayUtil { return INDEX_NOT_FOUND; } - final int lastEleIndex = lastIndexOf(array, subArray[subArray.length - 1], endInclude); - if (lastEleIndex < 0 || lastEleIndex < subArray.length - 1) { + final int firstIndex = lastIndexOf(array, subArray[0], endInclude); + if (firstIndex < 0 || firstIndex + subArray.length > array.length) { return INDEX_NOT_FOUND; } - // 匹配字串后续字符 - boolean isAllMatch = true; - for (int i = 0; i < subArray.length - 1; i++) { - if (ObjectUtil.notEqual(array[i + lastEleIndex - subArray.length + 1], subArray[i])) { - isAllMatch =false; - break; + for (int i = 0; i < subArray.length; i++) { + if (!ObjUtil.equals(array[i + firstIndex], subArray[i])) { + return lastIndexOfSub(array, firstIndex - 1, subArray); } } - if(isAllMatch){ - return lastEleIndex - subArray.length + 1; - } - return lastIndexOfSub(array, lastEleIndex - 1, subArray); + return firstIndex; } // O(n)时间复杂度检查数组是否有序