mirror of
https://gitee.com/chinabugotech/hutool.git
synced 2025-07-21 15:09:48 +08:00
add test
This commit is contained in:
@@ -27,9 +27,18 @@ import java.util.Set;
|
||||
public class TableMap<K, V> implements Map<K, V>, Iterable<Map.Entry<K, V>>, Serializable {
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
private static final int DEFAULT_CAPACITY = 10;
|
||||
|
||||
private final List<K> keys;
|
||||
private final List<V> values;
|
||||
|
||||
/**
|
||||
* 构造
|
||||
*/
|
||||
public TableMap() {
|
||||
this(DEFAULT_CAPACITY);
|
||||
}
|
||||
|
||||
/**
|
||||
* 构造
|
||||
*
|
||||
@@ -85,11 +94,12 @@ public class TableMap<K, V> implements Map<K, V>, Iterable<Map.Entry<K, V>>, Ser
|
||||
|
||||
/**
|
||||
* 根据value获得对应的key,只返回找到的第一个value对应的key值
|
||||
*
|
||||
* @param value 值
|
||||
* @return 键
|
||||
* @since 5.3.3
|
||||
*/
|
||||
public K getKey(V value){
|
||||
public K getKey(V value) {
|
||||
final int index = values.indexOf(value);
|
||||
if (index > -1 && index < keys.size()) {
|
||||
return keys.get(index);
|
||||
@@ -160,7 +170,17 @@ public class TableMap<K, V> implements Map<K, V>, Iterable<Map.Entry<K, V>>, Ser
|
||||
|
||||
@Override
|
||||
public Set<K> keySet() {
|
||||
return new HashSet<>(keys);
|
||||
return new HashSet<>(this.keys);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取所有键,可重复,不可修改
|
||||
*
|
||||
* @return 键列表
|
||||
* @since 5.8.0
|
||||
*/
|
||||
public List<K> keys() {
|
||||
return Collections.unmodifiableList(this.keys);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@@ -9,8 +9,11 @@ import cn.hutool.core.map.MapUtil;
|
||||
|
||||
import java.util.AbstractMap;
|
||||
import java.util.AbstractSet;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collection;
|
||||
import java.util.HashMap;
|
||||
import java.util.Iterator;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
|
||||
@@ -198,6 +201,15 @@ public class RowKeyTable<R, C, V> extends AbsTable<R, C, V> {
|
||||
//endregion
|
||||
|
||||
//region getColumn
|
||||
@Override
|
||||
public List<C> columnKeys() {
|
||||
final Collection<Map<C, V>> values = this.raw.values();
|
||||
final List<C> result = new ArrayList<>(values.size() * 16);
|
||||
for (Map<C, V> map : values) {
|
||||
map.forEach((key, value)->{result.add(key);});
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Map<R, V> getColumn(C columnKey) {
|
||||
|
@@ -1,10 +1,13 @@
|
||||
package cn.hutool.core.map.multi;
|
||||
|
||||
import cn.hutool.core.collection.ListUtil;
|
||||
import cn.hutool.core.lang.Opt;
|
||||
import cn.hutool.core.lang.func.Consumer3;
|
||||
import cn.hutool.core.map.MapUtil;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
|
||||
@@ -101,6 +104,25 @@ public interface Table<R, C, V> extends Iterable<Table.Cell<R, C, V>> {
|
||||
return Opt.ofNullable(columnMap()).map(Map::keySet).get();
|
||||
}
|
||||
|
||||
/**
|
||||
* 返回所有列的key,列的key如果实现Map是可重复key,则返回对应不去重的List。
|
||||
*
|
||||
* @return 列set
|
||||
* @since 5.8.0
|
||||
*/
|
||||
default List<C> columnKeys() {
|
||||
final Map<C, Map<R, V>> columnMap = columnMap();
|
||||
if(MapUtil.isEmpty(columnMap)){
|
||||
return ListUtil.empty();
|
||||
}
|
||||
|
||||
final List<C> result = new ArrayList<>(columnMap.size());
|
||||
for (Map.Entry<C, Map<R, V>> cMapEntry : columnMap.entrySet()) {
|
||||
result.add(cMapEntry.getKey());
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
/**
|
||||
* 返回列-行对应的map
|
||||
*
|
||||
|
Reference in New Issue
Block a user