mirror of
https://gitee.com/chinabugotech/hutool.git
synced 2025-07-21 15:09:48 +08:00
add size method
This commit is contained in:
@@ -16,6 +16,7 @@
|
|||||||
* 【extra 】 增加表达式引擎封装(ExpressionUtil)(pr#1203@Github)
|
* 【extra 】 增加表达式引擎封装(ExpressionUtil)(pr#1203@Github)
|
||||||
* 【core 】 增加enum转数字支持(issue#I24QZY@Gitee)
|
* 【core 】 增加enum转数字支持(issue#I24QZY@Gitee)
|
||||||
* 【core 】 NumberUtil.toBigDecimal空白符转换为0(issue#I24MRP@Gitee)
|
* 【core 】 NumberUtil.toBigDecimal空白符转换为0(issue#I24MRP@Gitee)
|
||||||
|
* 【core 】 CollUtil和IterUtil增加size方法(pr#208@Gitee)
|
||||||
|
|
||||||
### Bug修复
|
### Bug修复
|
||||||
* 【core 】 修复DateUtil.current使用System.nanoTime的问题(issue#1198@Github)
|
* 【core 】 修复DateUtil.current使用System.nanoTime的问题(issue#1198@Github)
|
||||||
|
@@ -21,7 +21,6 @@ import cn.hutool.core.util.ReflectUtil;
|
|||||||
import cn.hutool.core.util.StrUtil;
|
import cn.hutool.core.util.StrUtil;
|
||||||
import cn.hutool.core.util.TypeUtil;
|
import cn.hutool.core.util.TypeUtil;
|
||||||
|
|
||||||
import java.lang.reflect.Array;
|
|
||||||
import java.lang.reflect.Type;
|
import java.lang.reflect.Type;
|
||||||
import java.util.AbstractCollection;
|
import java.util.AbstractCollection;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
@@ -2933,9 +2932,7 @@ public class CollUtil {
|
|||||||
// ---------------------------------------------------------------------------------------------- Interface end
|
// ---------------------------------------------------------------------------------------------- Interface end
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 获取Collection或者iterator的大小
|
* 获取Collection或者iterator的大小,此方法可以处理的对象类型如下:
|
||||||
* <p>
|
|
||||||
* 此方法可以处理的对象类型如下
|
|
||||||
* <ul>
|
* <ul>
|
||||||
* <li>Collection - the collection size
|
* <li>Collection - the collection size
|
||||||
* <li>Map - the map size
|
* <li>Map - the map size
|
||||||
@@ -2947,12 +2944,13 @@ public class CollUtil {
|
|||||||
* @param object 可以为空的对象
|
* @param object 可以为空的对象
|
||||||
* @return 如果object为空则返回0
|
* @return 如果object为空则返回0
|
||||||
* @throws IllegalArgumentException 参数object不是Collection或者iterator
|
* @throws IllegalArgumentException 参数object不是Collection或者iterator
|
||||||
* @since 5.4.8
|
* @since 5.5.0
|
||||||
*/
|
*/
|
||||||
public static int size(final Object object) {
|
public static int size(final Object object) {
|
||||||
if (object == null) {
|
if (object == null) {
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
int total = 0;
|
int total = 0;
|
||||||
if (object instanceof Map<?, ?>) {
|
if (object instanceof Map<?, ?>) {
|
||||||
total = ((Map<?, ?>) object).size();
|
total = ((Map<?, ?>) object).size();
|
||||||
@@ -2960,8 +2958,6 @@ public class CollUtil {
|
|||||||
total = ((Collection<?>) object).size();
|
total = ((Collection<?>) object).size();
|
||||||
} else if (object instanceof Iterable<?>) {
|
} else if (object instanceof Iterable<?>) {
|
||||||
total = IterUtil.size((Iterable<?>) object);
|
total = IterUtil.size((Iterable<?>) object);
|
||||||
} else if (object instanceof Object[]) {
|
|
||||||
total = ((Object[]) object).length;
|
|
||||||
} else if (object instanceof Iterator<?>) {
|
} else if (object instanceof Iterator<?>) {
|
||||||
total = IterUtil.size((Iterator<?>) object);
|
total = IterUtil.size((Iterator<?>) object);
|
||||||
} else if (object instanceof Enumeration<?>) {
|
} else if (object instanceof Enumeration<?>) {
|
||||||
@@ -2970,13 +2966,11 @@ public class CollUtil {
|
|||||||
total++;
|
total++;
|
||||||
it.nextElement();
|
it.nextElement();
|
||||||
}
|
}
|
||||||
|
} else if (ArrayUtil.isArray(object)) {
|
||||||
|
total = ArrayUtil.length(object);
|
||||||
} else {
|
} else {
|
||||||
try {
|
|
||||||
total = Array.getLength(object);
|
|
||||||
} catch (IllegalArgumentException e) {
|
|
||||||
throw new IllegalArgumentException("Unsupported object type: " + object.getClass().getName());
|
throw new IllegalArgumentException("Unsupported object type: " + object.getClass().getName());
|
||||||
}
|
}
|
||||||
}
|
|
||||||
return total;
|
return total;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -828,13 +828,17 @@ public class IterUtil {
|
|||||||
*
|
*
|
||||||
* @param iterable Iterable对象
|
* @param iterable Iterable对象
|
||||||
* @return Iterable对象的元素数量
|
* @return Iterable对象的元素数量
|
||||||
* @since 5.4.8
|
* @since 5.5.0
|
||||||
*/
|
*/
|
||||||
public static int size(final Iterable<?> iterable) {
|
public static int size(final Iterable<?> iterable) {
|
||||||
|
if(null == iterable){
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
if (iterable instanceof Collection<?>) {
|
if (iterable instanceof Collection<?>) {
|
||||||
return ((Collection<?>) iterable).size();
|
return ((Collection<?>) iterable).size();
|
||||||
} else {
|
} else {
|
||||||
return size(iterable != null ? iterable.iterator() : empty());
|
return size(iterable.iterator());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -843,7 +847,7 @@ public class IterUtil {
|
|||||||
*
|
*
|
||||||
* @param iterator Iterator对象
|
* @param iterator Iterator对象
|
||||||
* @return Iterator对象的元素数量
|
* @return Iterator对象的元素数量
|
||||||
* @since 5.4.8
|
* @since 5.5.0
|
||||||
*/
|
*/
|
||||||
public static int size(final Iterator<?> iterator) {
|
public static int size(final Iterator<?> iterator) {
|
||||||
int size = 0;
|
int size = 0;
|
||||||
|
Reference in New Issue
Block a user