Package org.miaixz.bus.core.center.set
Class UniqueKeySet<K,V>
java.lang.Object
java.util.AbstractCollection<V>
java.util.AbstractSet<V>
org.miaixz.bus.core.center.set.UniqueKeySet<K,V>
- Type Parameters:
K- 唯一键类型V- 值对象
- All Implemented Interfaces:
Serializable,Iterable<V>,Collection<V>,Set<V>
唯一键的Set
通过自定义唯一键,通过
uniqueGenerator生成节点对象对应的键作为Map的key,确定唯一
此Set与HashSet不同的是,HashSet依赖于Object.equals(Object)确定唯一
但是很多时候我们无法对对象进行修改,此时在外部定义一个唯一规则,即可完成去重。
Set<UniqueTestBean> set = new UniqueKeySet<>(UniqueTestBean::getId);
- Since:
- Java 17+
- Author:
- Kimi Liu
- See Also:
-
Constructor Summary
ConstructorsConstructorDescriptionUniqueKeySet(boolean isLinked, Function<V, K> uniqueGenerator) 构造UniqueKeySet(boolean isLinked, Function<V, K> uniqueGenerator, Collection<? extends V> c) 构造UniqueKeySet(int initialCapacity, float loadFactor, Function<V, K> uniqueGenerator) 构造UniqueKeySet(Function<V, K> uniqueGenerator) 构造UniqueKeySet(Function<V, K> uniqueGenerator, Collection<? extends V> c) 构造UniqueKeySet(MapBuilder<K, V> builder, Function<V, K> uniqueGenerator) 构造 -
Method Summary
Modifier and TypeMethodDescriptionbooleanbooleanaddAllIfAbsent(Collection<? extends V> c) 加入集合中所有的值,如果值已经存在,则忽略之booleanaddIfAbsent(V v) 加入值,如果值已经存在,则忽略之voidclear()clone()booleanbooleanisEmpty()iterator()booleanintsize()Methods inherited from class java.util.AbstractSet
equals, hashCode, removeAllMethods inherited from class java.util.AbstractCollection
addAll, containsAll, retainAll, toArray, toArray, toStringMethods inherited from class java.lang.Object
finalize, getClass, notify, notifyAll, wait, wait, waitMethods inherited from interface java.util.Collection
parallelStream, removeIf, stream, toArrayMethods inherited from interface java.util.Set
addAll, containsAll, retainAll, spliterator, toArray, toArray
-
Constructor Details
-
UniqueKeySet
构造- Parameters:
uniqueGenerator- 唯一键生成规则函数,用于生成对象对应的唯一键
-
UniqueKeySet
构造- Parameters:
uniqueGenerator- 唯一键生成规则函数,用于生成对象对应的唯一键c- 初始化加入的集合
-
UniqueKeySet
构造- Parameters:
isLinked- 是否保持加入顺序uniqueGenerator- 唯一键生成规则函数,用于生成对象对应的唯一键
-
UniqueKeySet
构造- Parameters:
isLinked- 是否保持加入顺序uniqueGenerator- 唯一键生成规则函数,用于生成对象对应的唯一键c- 初始化加入的集合
-
UniqueKeySet
构造- Parameters:
initialCapacity- 初始容量loadFactor- 增长因子uniqueGenerator- 唯一键生成规则函数,用于生成对象对应的唯一键
-
UniqueKeySet
构造- Parameters:
builder- 初始Map,定义了Map类型uniqueGenerator- 唯一键生成规则函数,用于生成对象对应的唯一键
-
-
Method Details
-
iterator
-
size
public int size()- Specified by:
sizein interfaceCollection<K>- Specified by:
sizein interfaceSet<K>- Specified by:
sizein classAbstractCollection<V>
-
isEmpty
public boolean isEmpty()- Specified by:
isEmptyin interfaceCollection<K>- Specified by:
isEmptyin interfaceSet<K>- Overrides:
isEmptyin classAbstractCollection<V>
-
contains
- Specified by:
containsin interfaceCollection<K>- Specified by:
containsin interfaceSet<K>- Overrides:
containsin classAbstractCollection<V>
-
add
- Specified by:
addin interfaceCollection<K>- Specified by:
addin interfaceSet<K>- Overrides:
addin classAbstractCollection<V>
-
addIfAbsent
加入值,如果值已经存在,则忽略之- Parameters:
v- 值- Returns:
- 是否成功加入
-
addAllIfAbsent
加入集合中所有的值,如果值已经存在,则忽略之- Parameters:
c- 集合- Returns:
- 是否有一个或多个被加入成功
-
remove
- Specified by:
removein interfaceCollection<K>- Specified by:
removein interfaceSet<K>- Overrides:
removein classAbstractCollection<V>
-
clear
public void clear()- Specified by:
clearin interfaceCollection<K>- Specified by:
clearin interfaceSet<K>- Overrides:
clearin classAbstractCollection<V>
-
clone
-