mirror of
https://gitee.com/chinabugotech/hutool.git
synced 2025-07-21 15:09:48 +08:00
fix code
This commit is contained in:
@@ -22,6 +22,7 @@ import org.dromara.hutool.core.reflect.TypeUtil;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.lang.reflect.Type;
|
||||
import java.util.LinkedHashMap;
|
||||
import java.util.Map;
|
||||
import java.util.Objects;
|
||||
|
||||
@@ -80,7 +81,8 @@ public class MapConverter implements Converter, Serializable {
|
||||
return (Map) value;
|
||||
}
|
||||
}
|
||||
map = MapUtil.createMap(TypeUtil.getClass(targetType));
|
||||
|
||||
map = MapUtil.createMap(TypeUtil.getClass(targetType), LinkedHashMap::new);
|
||||
convertMapToMap(keyType, valueType, (Map) value, map);
|
||||
} else if (BeanUtil.isBean(value.getClass())) {
|
||||
map = BeanUtil.beanToMap(value);
|
||||
|
@@ -24,10 +24,7 @@ import org.dromara.hutool.core.util.ObjUtil;
|
||||
import java.util.*;
|
||||
import java.util.Map.Entry;
|
||||
import java.util.concurrent.ConcurrentHashMap;
|
||||
import java.util.function.BiFunction;
|
||||
import java.util.function.Function;
|
||||
import java.util.function.Predicate;
|
||||
import java.util.function.UnaryOperator;
|
||||
import java.util.function.*;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
@@ -240,16 +237,30 @@ public class MapUtil extends MapGetUtil {
|
||||
* @param mapType map类型
|
||||
* @return {@link Map}实例
|
||||
*/
|
||||
@SuppressWarnings("unchecked")
|
||||
public static <K, V> Map<K, V> createMap(final Class<?> mapType) {
|
||||
return createMap(mapType, HashMap::new);
|
||||
}
|
||||
|
||||
/**
|
||||
* 创建Map<br>
|
||||
* 传入抽象Map{@link AbstractMap}和{@link Map}类将默认创建{@link HashMap}
|
||||
*
|
||||
* @param <K> map键类型
|
||||
* @param <V> map值类型
|
||||
* @param mapType map类型
|
||||
* @param defaultMap 如果通过反射创建失败或提供的是抽象Map,则创建的默认Map
|
||||
* @return {@link Map}实例
|
||||
*/
|
||||
@SuppressWarnings("unchecked")
|
||||
public static <K, V> Map<K, V> createMap(final Class<?> mapType, final Supplier<Map<K, V>> defaultMap) {
|
||||
if (null == mapType || mapType.isAssignableFrom(AbstractMap.class)) {
|
||||
return new HashMap<>();
|
||||
return defaultMap.get();
|
||||
} else {
|
||||
try {
|
||||
return (Map<K, V>) ConstructorUtil.newInstance(mapType);
|
||||
} catch (final Exception e) {
|
||||
// 不支持的map类型,返回默认的HashMap
|
||||
return new HashMap<>();
|
||||
return defaultMap.get();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
45
hutool-core/src/test/java/org/dromara/hutool/core/data/Issue3081Test.java
Executable file
45
hutool-core/src/test/java/org/dromara/hutool/core/data/Issue3081Test.java
Executable file
@@ -0,0 +1,45 @@
|
||||
/*
|
||||
* Copyright (c) 2023 looly(loolly@aliyun.com)
|
||||
* Hutool is licensed under Mulan PSL v2.
|
||||
* You can use this software according to the terms and conditions of the Mulan PSL v2.
|
||||
* You may obtain a copy of Mulan PSL v2 at:
|
||||
* http://license.coscl.org.cn/MulanPSL2
|
||||
* THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
|
||||
* EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
|
||||
* MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
|
||||
* See the Mulan PSL v2 for more details.
|
||||
*/
|
||||
|
||||
package org.dromara.hutool.core.data;
|
||||
|
||||
import org.dromara.hutool.core.date.DateField;
|
||||
import org.dromara.hutool.core.date.DateRange;
|
||||
import org.dromara.hutool.core.date.DateTime;
|
||||
import org.dromara.hutool.core.date.DateUtil;
|
||||
import org.junit.jupiter.api.Assertions;
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
public class Issue3081Test {
|
||||
|
||||
@Test
|
||||
void dateRangeTest() {
|
||||
final DateTime start = DateUtil.parse("2023-01-01 00:00:00");
|
||||
final DateTime end = DateUtil.parse("2023-04-25 00:00:00");
|
||||
|
||||
final DateRange dateTimes = new DateRange(start, end, DateField.DAY_OF_MONTH, 30, true, true);
|
||||
|
||||
final List<DateTime> dateTimeList = new ArrayList<>();
|
||||
while (dateTimes.hasNext()) {
|
||||
dateTimeList.add(dateTimes.next());
|
||||
}
|
||||
Assertions.assertEquals(4, dateTimeList.size());
|
||||
|
||||
Assertions.assertEquals(DateUtil.parse("2023-01-01 00:00:00"), dateTimeList.get(0));
|
||||
Assertions.assertEquals(DateUtil.parse("2023-01-31 00:00:00"), dateTimeList.get(1));
|
||||
Assertions.assertEquals(DateUtil.parse("2023-03-02 00:00:00"), dateTimeList.get(2));
|
||||
Assertions.assertEquals(DateUtil.parse("2023-04-01 00:00:00"), dateTimeList.get(3));
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user