This commit is contained in:
Looly 2024-07-05 18:09:35 +08:00
parent deea561052
commit b2e5edb990
2 changed files with 43 additions and 6 deletions

View File

@ -42,6 +42,7 @@ import java.util.stream.Collectors;
public class ArrayUtil extends PrimitiveArrayUtil { public class ArrayUtil extends PrimitiveArrayUtil {
// region ----- ofArray // region ----- ofArray
/** /**
* 转为数组如果values为数组返回否则返回一个只有values一个元素的数组<br> * 转为数组如果values为数组返回否则返回一个只有values一个元素的数组<br>
* 注意values的元素类型或其本身类型必须和提供的elementType完全一致 * 注意values的元素类型或其本身类型必须和提供的elementType完全一致
@ -64,7 +65,7 @@ public class ArrayUtil extends PrimitiveArrayUtil {
* 包装单一元素为数组 * 包装单一元素为数组
* *
* @param <A> 数组类型 * @param <A> 数组类型
* @param value 元素值 * @param value 元素值
* @param elementType 数组元素类型{@code null}表示使用value的类型 * @param elementType 数组元素类型{@code null}表示使用value的类型
* @return 数组 * @return 数组
*/ */
@ -777,18 +778,18 @@ public class ArrayUtil extends PrimitiveArrayUtil {
* </ul> * </ul>
* *
* @param <T> 数组元素类型 * @param <T> 数组元素类型
* @param buffer 已有数组 * @param array 已有数组
* @param index 位置 * @param index 位置
* @param values 新值 * @param values 新值
* @return 新数组或原有数组 * @return 新数组或原有数组
* @since 5.7.23 * @since 5.7.23
*/ */
@SuppressWarnings({"unchecked"}) @SuppressWarnings({"unchecked"})
public static <T> T[] replace(final T[] buffer, final int index, final T... values) { public static <T> T[] replace(final T[] array, final int index, final T... values) {
if (isEmpty(buffer)) { if (isEmpty(array)) {
return values; return values;
} }
return ArrayWrapper.of(buffer).replace(index, values).getRaw(); return ArrayWrapper.of(array).replace(index, values).getRaw();
} }
/** /**

View File

@ -561,6 +561,20 @@ public class ArrayUtilTest {
assertArrayEquals(new Object[]{4, "3", '2', "1"}, reverse); assertArrayEquals(new Object[]{4, "3", '2', "1"}, reverse);
} }
@Test
void testRemoveWithValidIndex() {
final String[] array = {"a", "b", "c", "d"};
final String[] result = ArrayUtil.remove(array, 1);
assertArrayEquals(new String[]{"a", "c", "d"}, result);
}
@Test
void testRemoveEleFromObjectArray() {
final Integer[] array = {1, 2, 3, 2, 4};
final Integer[] expected = {1, 3, 2, 4};
Assertions.assertArrayEquals(expected, ArrayUtil.removeEle(array, 2));
}
@Test @Test
public void removeEmptyTest() { public void removeEmptyTest() {
final String[] a = {"a", "b", "", null, " ", "c"}; final String[] a = {"a", "b", "", null, " ", "c"};
@ -643,7 +657,7 @@ public class ArrayUtilTest {
final String[] a = {"1", "2", "3", "4"}; final String[] a = {"1", "2", "3", "4"};
final String[] b = {"a", "b", "c"}; final String[] b = {"a", "b", "c"};
// 在小于0的位置-1的位置插入返回b+a新数组 // 在小于0的位置相当于在a前插入b返回b+a新数组
String[] result = ArrayUtil.replace(a, -1, b); String[] result = ArrayUtil.replace(a, -1, b);
assertArrayEquals(new String[]{"a", "b", "c", "1", "2", "3", "4"}, result); assertArrayEquals(new String[]{"a", "b", "c", "1", "2", "3", "4"}, result);
@ -1035,4 +1049,26 @@ public class ArrayUtilTest {
// Then // Then
assertArrayEquals(list.toArray(new String[0]), result, "The array should match the list contents."); assertArrayEquals(list.toArray(new String[0]), result, "The array should match the list contents.");
} }
@Test
public void testResizeWithSmallerSize() {
// Setup
final Integer[] originalArray = {1, 2, 3, 4, 5};
// Execute
final Integer[] resizedArray = ArrayUtil.resize(originalArray, 3);
// Assert
assertEquals(3, resizedArray.length);
assertArrayEquals(new Integer[]{1, 2, 3}, resizedArray);
}
@Test
public void testResizeWithLargerSize() {
// Setup
final Integer[] originalArray = {1, 2, 3};
// Execute
final Integer[] resizedArray = ArrayUtil.resize(originalArray, 5);
// Assert
assertEquals(5, resizedArray.length);
assertArrayEquals(new Integer[]{1, 2, 3, null, null}, resizedArray);
}
} }