mirror of
https://gitee.com/chinabugotech/hutool.git
synced 2025-05-09 23:51:34 +08:00
fix code
This commit is contained in:
parent
4c62f40bb6
commit
1ca70d893d
@ -227,15 +227,20 @@ public class CollUtil {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 是否包含{@code null}元素
|
* 是否包含{@code null}元素<br>
|
||||||
|
* <ul>
|
||||||
|
* <list>集合为{@code null},返回{@code true}</list>
|
||||||
|
* <list>集合为空集合,即元素个数为0,返回{@code false}</list>
|
||||||
|
* <list>集合中元素为"",返回{@code false}</list>
|
||||||
|
* </ul>
|
||||||
*
|
*
|
||||||
* @param iterable 被检查的Iterable对象,如果为{@code null} 返回true
|
* @param iterable 被检查的Iterable对象,如果为{@code null} 返回true
|
||||||
* @return 是否包含{@code null}元素
|
* @return 是否包含{@code null}元素
|
||||||
* @see IterUtil#hasNull(Iterable)
|
* @see IterUtil#hasNull(Iterator)
|
||||||
* @since 3.0.7
|
* @since 3.0.7
|
||||||
*/
|
*/
|
||||||
public static boolean hasNull(final Iterable<?> iterable) {
|
public static boolean hasNull(final Iterable<?> iterable) {
|
||||||
return IterUtil.hasNull(iterable);
|
return IterUtil.hasNull(IterUtil.getIter(iterable));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -1359,6 +1364,10 @@ public class CollUtil {
|
|||||||
* @return 第一个元素,为空返回{@code null}
|
* @return 第一个元素,为空返回{@code null}
|
||||||
*/
|
*/
|
||||||
public static <T> T getFirst(final Iterable<T> iterable) {
|
public static <T> T getFirst(final Iterable<T> iterable) {
|
||||||
|
if (iterable instanceof List) {
|
||||||
|
final List<T> list = (List<T>) iterable;
|
||||||
|
return CollUtil.isEmpty(list) ? null: list.get(0);
|
||||||
|
}
|
||||||
return IterUtil.getFirst(IterUtil.getIter(iterable));
|
return IterUtil.getFirst(IterUtil.getIter(iterable));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -87,17 +87,12 @@ public class IterUtil {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 是否包含{@code null}元素
|
* 是否包含{@code null}元素<br>
|
||||||
*
|
* <ul>
|
||||||
* @param iter 被检查的{@link Iterable}对象,如果为{@code null} 返回true
|
* <list>Iterator为{@code null},返回{@code true}</list>
|
||||||
* @return 是否包含{@code null}元素
|
* <list>Iterator为空集合,即元素个数为0,返回{@code false}</list>
|
||||||
*/
|
* <list>Iterator中元素为"",返回{@code false}</list>
|
||||||
public static boolean hasNull(final Iterable<?> iter) {
|
* </ul>
|
||||||
return hasNull(null == iter ? null : iter.iterator());
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 是否包含{@code null}元素
|
|
||||||
*
|
*
|
||||||
* @param iter 被检查的{@link Iterator}对象,如果为{@code null} 返回true
|
* @param iter 被检查的{@link Iterator}对象,如果为{@code null} 返回true
|
||||||
* @return 是否包含{@code null}元素
|
* @return 是否包含{@code null}元素
|
||||||
|
@ -64,6 +64,9 @@ public class UTCDateParser extends DefaultDateBasic implements DateParser {
|
|||||||
if (length == DatePattern.UTC_SIMPLE_PATTERN.length() - 2) {
|
if (length == DatePattern.UTC_SIMPLE_PATTERN.length() - 2) {
|
||||||
// 格式类似:2018-09-13T05:34:31
|
// 格式类似:2018-09-13T05:34:31
|
||||||
return new DateTime(source, DatePattern.UTC_SIMPLE_FORMAT);
|
return new DateTime(source, DatePattern.UTC_SIMPLE_FORMAT);
|
||||||
|
} else if (length == DatePattern.UTC_SIMPLE_PATTERN.length() - 5) {
|
||||||
|
// 格式类似:2018-09-13T05:34
|
||||||
|
return new DateTime(source + ":00", DatePattern.UTC_SIMPLE_FORMAT);
|
||||||
} else if (StrUtil.contains(source, CharUtil.DOT)) {
|
} else if (StrUtil.contains(source, CharUtil.DOT)) {
|
||||||
// 可能为: 2021-03-17T06:31:33.99
|
// 可能为: 2021-03-17T06:31:33.99
|
||||||
return new DateTime(source, DatePattern.UTC_SIMPLE_MS_FORMAT);
|
return new DateTime(source, DatePattern.UTC_SIMPLE_MS_FORMAT);
|
||||||
|
@ -267,7 +267,7 @@ public class NumberUtil {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 补充Math.ceilDiv() JDK8中添加了和Math.floorDiv()但却没有ceilDiv()
|
* 补充Math.ceilDiv() JDK8中添加了和 {@link Math#floorDiv(int, int)} 但却没有ceilDiv()
|
||||||
*
|
*
|
||||||
* @param v1 被除数
|
* @param v1 被除数
|
||||||
* @param v2 除数
|
* @param v2 除数
|
||||||
@ -1448,6 +1448,7 @@ public class NumberUtil {
|
|||||||
* 4、空串返回0
|
* 4、空串返回0
|
||||||
* 5、.123形式返回0(按照小于0的小数对待)
|
* 5、.123形式返回0(按照小于0的小数对待)
|
||||||
* 6、123.56截取小数点之前的数字,忽略小数部分
|
* 6、123.56截取小数点之前的数字,忽略小数部分
|
||||||
|
* 7、科学计数法抛出NumberFormatException异常
|
||||||
* </pre>
|
* </pre>
|
||||||
*
|
*
|
||||||
* @param number 数字,支持0x开头、0开头和普通十进制
|
* @param number 数字,支持0x开头、0开头和普通十进制
|
||||||
@ -1460,6 +1461,11 @@ public class NumberUtil {
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if(StrUtil.containsIgnoreCase(number, "E")){
|
||||||
|
// 科学计数法忽略支持,科学计数法一般用于表示非常小和非常大的数字,这类数字转换为int后精度丢失,没有意义。
|
||||||
|
throw new NumberFormatException(StrUtil.format("Unsupported int format: [{}]", number));
|
||||||
|
}
|
||||||
|
|
||||||
if (StrUtil.startWithIgnoreCase(number, "0x")) {
|
if (StrUtil.startWithIgnoreCase(number, "0x")) {
|
||||||
// 0x04表示16进制数
|
// 0x04表示16进制数
|
||||||
return Integer.parseInt(number.substring(2), 16);
|
return Integer.parseInt(number.substring(2), 16);
|
||||||
|
@ -15,6 +15,7 @@ import lombok.ToString;
|
|||||||
import org.junit.Assert;
|
import org.junit.Assert;
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
|
|
||||||
|
import java.util.ArrayDeque;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
import java.util.Collection;
|
import java.util.Collection;
|
||||||
@ -39,6 +40,34 @@ import java.util.function.Function;
|
|||||||
*/
|
*/
|
||||||
public class CollUtilTest {
|
public class CollUtilTest {
|
||||||
|
|
||||||
|
@SuppressWarnings("ConstantConditions")
|
||||||
|
@Test
|
||||||
|
public void emptyIfNullTest() {
|
||||||
|
final Set<?> set = null;
|
||||||
|
final Set<?> set1 = CollUtil.emptyIfNull(set);
|
||||||
|
Assert.assertEquals(SetUtil.empty(), set1);
|
||||||
|
|
||||||
|
final List<?> list = null;
|
||||||
|
final List<?> list1 = CollUtil.emptyIfNull(list);
|
||||||
|
Assert.assertEquals(ListUtil.empty(), list1);
|
||||||
|
}
|
||||||
|
|
||||||
|
@SuppressWarnings("ConstantConditions")
|
||||||
|
@Test
|
||||||
|
public void hasNullTest() {
|
||||||
|
ArrayList<Object> list = null;
|
||||||
|
Assert.assertTrue(CollUtil.hasNull(list));
|
||||||
|
|
||||||
|
list = ListUtil.of();
|
||||||
|
Assert.assertFalse(CollUtil.hasNull(list));
|
||||||
|
|
||||||
|
list = ListUtil.of("");
|
||||||
|
Assert.assertFalse(CollUtil.hasNull(list));
|
||||||
|
|
||||||
|
list = ListUtil.of("", null);
|
||||||
|
Assert.assertTrue(CollUtil.hasNull(list));
|
||||||
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void defaultIfEmpty() {
|
public void defaultIfEmpty() {
|
||||||
ArrayList<String> strings = CollUtil.defaultIfEmpty(ListUtil.of(), ListUtil.of("1"));
|
ArrayList<String> strings = CollUtil.defaultIfEmpty(ListUtil.of(), ListUtil.of("1"));
|
||||||
@ -50,7 +79,7 @@ public class CollUtilTest {
|
|||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void defaultIfEmpty2() {
|
public void defaultIfEmpty2() {
|
||||||
ArrayList<String> strings = CollUtil.defaultIfEmpty(ListUtil.of(), Function.identity(), () -> ListUtil.of("1"));
|
final ArrayList<String> strings = CollUtil.defaultIfEmpty(ListUtil.of(), Function.identity(), () -> ListUtil.of("1"));
|
||||||
Assert.assertEquals(ListUtil.of("1"), strings);
|
Assert.assertEquals(ListUtil.of("1"), strings);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -945,6 +974,7 @@ public class CollUtilTest {
|
|||||||
Assert.assertEquals("[aa, bb, cc, dd]", trans.toString());
|
Assert.assertEquals("[aa, bb, cc, dd]", trans.toString());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@SuppressWarnings("ConstantConditions")
|
||||||
@Test
|
@Test
|
||||||
public void unionNullTest() {
|
public void unionNullTest() {
|
||||||
final List<String> list1 = new ArrayList<>();
|
final List<String> list1 = new ArrayList<>();
|
||||||
@ -954,6 +984,7 @@ public class CollUtilTest {
|
|||||||
Assert.assertNotNull(union);
|
Assert.assertNotNull(union);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@SuppressWarnings("ConstantConditions")
|
||||||
@Test
|
@Test
|
||||||
public void unionDistinctNullTest() {
|
public void unionDistinctNullTest() {
|
||||||
final List<String> list1 = new ArrayList<>();
|
final List<String> list1 = new ArrayList<>();
|
||||||
@ -963,6 +994,7 @@ public class CollUtilTest {
|
|||||||
Assert.assertNotNull(set);
|
Assert.assertNotNull(set);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@SuppressWarnings("ConstantConditions")
|
||||||
@Test
|
@Test
|
||||||
public void unionAllNullTest() {
|
public void unionAllNullTest() {
|
||||||
final List<String> list1 = new ArrayList<>();
|
final List<String> list1 = new ArrayList<>();
|
||||||
@ -972,6 +1004,7 @@ public class CollUtilTest {
|
|||||||
Assert.assertNotNull(list);
|
Assert.assertNotNull(list);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@SuppressWarnings("ConstantConditions")
|
||||||
@Test
|
@Test
|
||||||
public void intersectionNullTest() {
|
public void intersectionNullTest() {
|
||||||
final List<String> list1 = new ArrayList<>();
|
final List<String> list1 = new ArrayList<>();
|
||||||
@ -983,6 +1016,7 @@ public class CollUtilTest {
|
|||||||
Assert.assertNotNull(collection);
|
Assert.assertNotNull(collection);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@SuppressWarnings("ConstantConditions")
|
||||||
@Test
|
@Test
|
||||||
public void intersectionDistinctNullTest() {
|
public void intersectionDistinctNullTest() {
|
||||||
final List<String> list1 = new ArrayList<>();
|
final List<String> list1 = new ArrayList<>();
|
||||||
@ -1024,8 +1058,20 @@ public class CollUtilTest {
|
|||||||
@EqualsAndHashCode(callSuper = true)
|
@EqualsAndHashCode(callSuper = true)
|
||||||
@Data
|
@Data
|
||||||
static class Dog extends Animal {
|
static class Dog extends Animal {
|
||||||
public Dog(String name, Integer age) {
|
public Dog(final String name, final Integer age) {
|
||||||
super(name, age);
|
super(name, age);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void getFirstTest() {
|
||||||
|
Assert.assertNull(CollUtil.getFirst(null));
|
||||||
|
Assert.assertNull(CollUtil.getFirst(ListUtil.of()));
|
||||||
|
|
||||||
|
Assert.assertEquals("1", CollUtil.getFirst(ListUtil.of("1", "2", "3")));
|
||||||
|
final ArrayDeque<String> deque = new ArrayDeque<>();
|
||||||
|
deque.add("3");
|
||||||
|
deque.add("4");
|
||||||
|
Assert.assertEquals("3", CollUtil.getFirst(deque));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -682,6 +682,15 @@ public class DateUtilTest {
|
|||||||
Assert.assertEquals("2021-03-30 12:56:51", Objects.requireNonNull(parse).toString());
|
Assert.assertEquals("2021-03-30 12:56:51", Objects.requireNonNull(parse).toString());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void parseUTCTest3() {
|
||||||
|
// issue#I5M6DP
|
||||||
|
final String dateStr = "2022-08-13T09:30";
|
||||||
|
final DateTime dateTime = DateUtil.parse(dateStr);
|
||||||
|
Assert.assertNotNull(dateTime);
|
||||||
|
Assert.assertEquals("2022-08-13 09:30:00", dateTime.toString());
|
||||||
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void parseCSTTest() {
|
public void parseCSTTest() {
|
||||||
final String dateStr = "Wed Sep 16 11:26:23 CST 2009";
|
final String dateStr = "Wed Sep 16 11:26:23 CST 2009";
|
||||||
|
@ -12,7 +12,6 @@ import java.math.RoundingMode;
|
|||||||
* {@link NumberUtil} 单元测试类
|
* {@link NumberUtil} 单元测试类
|
||||||
*
|
*
|
||||||
* @author Looly
|
* @author Looly
|
||||||
*
|
|
||||||
*/
|
*/
|
||||||
public class NumberUtilTest {
|
public class NumberUtilTest {
|
||||||
|
|
||||||
@ -300,6 +299,20 @@ public class NumberUtilTest {
|
|||||||
Assert.assertEquals(1482, v1);
|
Assert.assertEquals(1482, v1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test(expected = NumberFormatException.class)
|
||||||
|
public void parseIntTest3() {
|
||||||
|
final int v1 = NumberUtil.parseInt("d");
|
||||||
|
Assert.assertEquals(0, v1);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test(expected = NumberFormatException.class)
|
||||||
|
public void parseIntTest4() {
|
||||||
|
// issue#I5M55F
|
||||||
|
// 科学计数法忽略支持,科学计数法一般用于表示非常小和非常大的数字,这类数字转换为int后精度丢失,没有意义。
|
||||||
|
final String numberStr = "429900013E20220812163344551";
|
||||||
|
NumberUtil.parseInt(numberStr);
|
||||||
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void parseNumberTest() {
|
public void parseNumberTest() {
|
||||||
// from 5.4.8 issue#I23ORQ@Gitee
|
// from 5.4.8 issue#I23ORQ@Gitee
|
||||||
@ -311,6 +324,15 @@ public class NumberUtilTest {
|
|||||||
Assert.assertEquals(1482L, v2.longValue());
|
Assert.assertEquals(1482L, v2.longValue());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void parseNumberTest2() {
|
||||||
|
// issue#I5M55F
|
||||||
|
final String numberStr = "429900013E20220812163344551";
|
||||||
|
final Number number = NumberUtil.parseNumber(numberStr);
|
||||||
|
Assert.assertNotNull(number);
|
||||||
|
Assert.assertTrue(number instanceof BigDecimal);
|
||||||
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void parseHexNumberTest() {
|
public void parseHexNumberTest() {
|
||||||
// 千位分隔符去掉
|
// 千位分隔符去掉
|
||||||
@ -434,10 +456,4 @@ public class NumberUtilTest {
|
|||||||
//noinspection ResultOfMethodCallIgnored
|
//noinspection ResultOfMethodCallIgnored
|
||||||
NumberUtil.range(0, Integer.MIN_VALUE);
|
NumberUtil.range(0, Integer.MIN_VALUE);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test(expected = NumberFormatException.class)
|
|
||||||
public void parseIntTest3() {
|
|
||||||
int v1 = NumberUtil.parseInt("d");
|
|
||||||
Assert.assertEquals(0, v1);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user