com.gitee.feizns.ArrayUtils Maven / Gradle / Ivy
package com.gitee.feizns;
import lombok.NonNull;
import java.lang.reflect.Array;
import java.util.Arrays;
import java.util.Iterator;
import java.util.Objects;
import java.util.function.Consumer;
import java.util.function.Predicate;
import java.util.stream.Collectors;
/**
* 数组
* @author feizns
* @since 2019/5/13
*/
public abstract class ArrayUtils {
/**
* 查找第一个元素的下标
* @param test 查找规则
* @param array 需要筛选的数组
* @return 下标
*/
public static int findIndex(@NonNull Predicate test, T... array) {
if ( array != null ) {
for (int i = 0; i < array.length; i++) {
if ( test.test(array[i]) )
return i;
}
}
return -1;
}
/**
* @see ArrayUtils#findIndex(java.util.function.Predicate, java.lang.Object[])
* @param test 查找规则
* @param array 数组
* @return 下标
*/
public static final int indexOf(@NonNull Predicate test, T... array) {
return findIndex(test, array);
}
/**
* 查找第一个元素
* @param test 查找规则
* @param array 数组
* @return 匹配查找规则的第一个元素
*/
public static T findFirst(@NonNull Predicate test, T... array) {
int index = -1;
return (index = findIndex(test, array)) == -1 ? null : array[index];
}
/**
* 将数组包装成iterator
* @param ele 数组
* @param
* @return iterator
*/
public static Iterator iterator(T... ele) {
return new Iterator() {
int index = 0;
@Override
public boolean hasNext() {
return index != ele.length;
}
@Override
public T next() {
return ele[index++];
}
};
}
/**
* 将数组包装成功iterable
* @param ele
* @param
* @return
*/
public static Iterable iterable(T... ele) {
return () -> iterator(ele);
}
/**
*
* @param ele
* @param
* @return
*/
public static final boolean isEmpty(T... ele) {
return ele == null || ele.length == 0;
}
/**
* 遍历一个未知的数组
* @param array
* @param consumer
*/
public static final void forEach(Object array, Consumer
© 2015 - 2025 Weber Informatics LLC | Privacy Policy