mirror of
https://gitee.com/dromara/hutool.git
synced 2025-04-05 17:37:59 +08:00
add method
This commit is contained in:
parent
0d9185a98d
commit
6427120482
@ -288,8 +288,10 @@ public class MapUtil {
|
||||
* @param pairs 键值对
|
||||
* @return Map
|
||||
* @since 5.4.1
|
||||
* @deprecated 方法容易歧义,请使用 {@link #ofEntries(Entry[])}
|
||||
*/
|
||||
@SafeVarargs
|
||||
@Deprecated
|
||||
public static <K, V> Map<K, V> of(Pair<K, V>... pairs) {
|
||||
final Map<K, V> map = new HashMap<>();
|
||||
for (Pair<K, V> pair : pairs) {
|
||||
@ -298,6 +300,25 @@ public class MapUtil {
|
||||
return map;
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据给定的Pair数组创建Map对象
|
||||
*
|
||||
* @param <K> 键类型
|
||||
* @param <V> 值类型
|
||||
* @param entries 键值对
|
||||
* @return Map
|
||||
* @see #entry(Object, Object)
|
||||
* @since 5.8.0
|
||||
*/
|
||||
@SafeVarargs
|
||||
public static <K, V> Map<K, V> ofEntries(Map.Entry<K, V>... entries) {
|
||||
final Map<K, V> map = new HashMap<>();
|
||||
for (Map.Entry<K, V> pair : entries) {
|
||||
map.put(pair.getKey(), pair.getValue());
|
||||
}
|
||||
return map;
|
||||
}
|
||||
|
||||
/**
|
||||
* 将数组转换为Map(HashMap),支持数组元素类型为:
|
||||
*
|
||||
@ -1382,4 +1403,36 @@ public class MapUtil {
|
||||
}
|
||||
return values;
|
||||
}
|
||||
|
||||
/**
|
||||
* 将键和值转换为{@link AbstractMap.SimpleImmutableEntry}<br>
|
||||
* 返回的Entry不可变
|
||||
*
|
||||
* @param key 键
|
||||
* @param value 值
|
||||
* @param <K> 键类型
|
||||
* @param <V> 值类型
|
||||
* @return {@link AbstractMap.SimpleImmutableEntry}
|
||||
* @since 5.8.0
|
||||
*/
|
||||
public static <K, V> Map.Entry<K, V> entry(K key, V value) {
|
||||
return entry(key, value, true);
|
||||
}
|
||||
|
||||
/**
|
||||
* 将键和值转换为{@link AbstractMap.SimpleEntry} 或者 {@link AbstractMap.SimpleImmutableEntry}
|
||||
*
|
||||
* @param key 键
|
||||
* @param value 值
|
||||
* @param <K> 键类型
|
||||
* @param <V> 值类型
|
||||
* @param isImmutable 是否不可变Entry
|
||||
* @return {@link AbstractMap.SimpleEntry} 或者 {@link AbstractMap.SimpleImmutableEntry}
|
||||
* @since 5.8.0
|
||||
*/
|
||||
public static <K, V> Map.Entry<K, V> entry(K key, V value, boolean isImmutable) {
|
||||
return isImmutable ?
|
||||
new AbstractMap.SimpleEntry<>(key, value) :
|
||||
new AbstractMap.SimpleImmutableEntry<>(key, value);
|
||||
}
|
||||
}
|
||||
|
@ -1,31 +0,0 @@
|
||||
package cn.hutool.core.map;
|
||||
|
||||
/**
|
||||
* {@link java.util.Map.Entry}简单实现。<br>
|
||||
* 键值对使用不可变字段表示。
|
||||
*
|
||||
* @param <K> 键类型
|
||||
* @param <V> 值类型
|
||||
* @author looly
|
||||
* @since 5.7.23
|
||||
*/
|
||||
public class SimpleEntry<K, V> extends AbsEntry<K, V> {
|
||||
|
||||
private final K key;
|
||||
private final V value;
|
||||
|
||||
public SimpleEntry(K key, V value) {
|
||||
this.key = key;
|
||||
this.value = value;
|
||||
}
|
||||
|
||||
@Override
|
||||
public K getKey() {
|
||||
return key;
|
||||
}
|
||||
|
||||
@Override
|
||||
public V getValue() {
|
||||
return value;
|
||||
}
|
||||
}
|
@ -172,7 +172,7 @@ public class TableMap<K, V> implements Map<K, V>, Iterable<Map.Entry<K, V>>, Ser
|
||||
public Set<Map.Entry<K, V>> entrySet() {
|
||||
final Set<Map.Entry<K, V>> hashSet = new LinkedHashSet<>();
|
||||
for (int i = 0; i < size(); i++) {
|
||||
hashSet.add(new SimpleEntry<>(keys.get(i), values.get(i)));
|
||||
hashSet.add(MapUtil.entry(keys.get(i), values.get(i)));
|
||||
}
|
||||
return hashSet;
|
||||
}
|
||||
@ -190,7 +190,7 @@ public class TableMap<K, V> implements Map<K, V>, Iterable<Map.Entry<K, V>>, Ser
|
||||
|
||||
@Override
|
||||
public Map.Entry<K, V> next() {
|
||||
return new SimpleEntry<>(keysIter.next(), valuesIter.next());
|
||||
return MapUtil.entry(keysIter.next(), valuesIter.next());
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -5,7 +5,7 @@ import cn.hutool.core.collection.ComputeIter;
|
||||
import cn.hutool.core.collection.IterUtil;
|
||||
import cn.hutool.core.collection.TransIter;
|
||||
import cn.hutool.core.map.AbsEntry;
|
||||
import cn.hutool.core.map.SimpleEntry;
|
||||
import cn.hutool.core.map.MapUtil;
|
||||
|
||||
import java.util.AbstractMap;
|
||||
import java.util.AbstractSet;
|
||||
@ -130,7 +130,7 @@ public class RowKeyTable<R, C, V> extends AbsTable<R, C, V> {
|
||||
@Override
|
||||
public Iterator<Map.Entry<C, Map<R, V>>> iterator() {
|
||||
return new TransIter<>(columnKeySet.iterator(),
|
||||
c -> new SimpleEntry<>(c, getColumn(c)));
|
||||
c -> MapUtil.entry(c, getColumn(c)));
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -8,7 +8,12 @@ import lombok.Data;
|
||||
import org.junit.Assert;
|
||||
import org.junit.Test;
|
||||
|
||||
import java.util.*;
|
||||
import java.util.ArrayDeque;
|
||||
import java.util.Arrays;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Queue;
|
||||
import java.util.function.Function;
|
||||
import java.util.stream.Collectors;
|
||||
import java.util.stream.Stream;
|
||||
@ -201,4 +206,13 @@ public class MapUtilTest {
|
||||
String join3 = MapUtil.sortJoin(build, StrUtil.EMPTY, StrUtil.EMPTY, false, "123", "abc");
|
||||
Assert.assertEquals("key1value1key2value2key3value3123abc", join3);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void ofEntriesTest(){
|
||||
final Map<String, Integer> map = MapUtil.ofEntries(MapUtil.entry("a", 1), MapUtil.entry("b", 2));
|
||||
Assert.assertEquals(2, map.size());
|
||||
|
||||
Assert.assertEquals(Integer.valueOf(1), map.get("a"));
|
||||
Assert.assertEquals(Integer.valueOf(2), map.get("b"));
|
||||
}
|
||||
}
|
||||
|
@ -1323,7 +1323,8 @@ public class ExcelWriter extends ExcelBase<ExcelWriter> {
|
||||
// -------------------------------------------------------------------------- Private method start
|
||||
|
||||
/**
|
||||
* 为指定的key列表添加标题别名,如果没有定义key的别名,在onlyAlias为false时使用原key
|
||||
* 为指定的key列表添加标题别名,如果没有定义key的别名,在onlyAlias为false时使用原key<br>
|
||||
* key为别名,value为字段值
|
||||
*
|
||||
* @param rowMap 一行数据
|
||||
* @return 别名列表
|
||||
|
@ -0,0 +1,28 @@
|
||||
package cn.hutool.poi.excel;
|
||||
|
||||
import cn.hutool.core.collection.ListUtil;
|
||||
import cn.hutool.core.map.MapUtil;
|
||||
import org.junit.Ignore;
|
||||
import org.junit.Test;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
public class Issue2221Test {
|
||||
|
||||
@Test
|
||||
@Ignore
|
||||
public void writeDuplicateHeaderAliasTest(){
|
||||
final ExcelWriter writer = ExcelUtil.getWriter();
|
||||
// 设置别名
|
||||
writer.addHeaderAlias("androidLc", "安卓");
|
||||
writer.addHeaderAlias("androidAc", "安卓");
|
||||
writer.setOnlyAlias(true);
|
||||
|
||||
// 写入数据
|
||||
List<Map<Object, Object>> data = ListUtil.of(
|
||||
MapUtil.ofEntries(MapUtil.entry("androidLc", "1次"), MapUtil.entry("androidAc", "3人")),
|
||||
MapUtil.ofEntries(MapUtil.entry("androidLc", "1次"), MapUtil.entry("androidAc", "3人"))
|
||||
);
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue
Block a user