Apache Commons Collections教程
开源项目
知识点
相关文章
更多最近更新
更多commons-collections BidiMap双向映射
2019-04-23 23:38|来源: 网路
新接口被添加到支持双向映射。 使用双向映射,可以使用值查找键,并且可以使用键轻松查找值。
接口声明
以下是org.apache.commons.collections4.BidiMap <K,V>
接口的声明 -
public interface BidiMap<K,V> extends IterableMap<K,V>
以下是接口的方法列表 -
编号 | 方法 | 描述 |
---|---|---|
1 | K getKey(Object value) |
获取当前映射到指定值的键。 |
2 | BidiMap<V,K> inverseBidiMap() |
获取该映射的键和值的键视图。 |
3 | V put(K key, V value) |
将键值对放入映射中,替换之前的任何一对。 |
4 | K removeValue(Object value) |
删除当前映射到指定值的键值对(可选操作)。 |
5 | Set<V> values() |
返回此映射中包含的值的Set 视图。 |
方法继承
该接口继承了以下接口的方法 -
org.apache.commons.collections4.Get
org.apache.commons.collections4.IterableGet
org.apache.commons.collections4.Put
java.util.Map
BidiMap接口实例
import org.apache.commons.collections4.BidiMap; import org.apache.commons.collections4.bidimap.TreeBidiMap; public class BidiMapTester { public static void main(String[] args) { BidiMap<String, String> bidi = new TreeBidiMap<>(); bidi.put("One", "1"); bidi.put("Two", "2"); bidi.put("Three", "3"); System.out.println(bidi.get("One")); System.out.println(bidi.getKey("1")); System.out.println("Original Map: " + bidi); bidi.removeValue("1"); System.out.println("Modified Map: " + bidi); BidiMap<String, String> inversedMap = bidi.inverseBidiMap(); System.out.println("Inversed Map: " + inversedMap); } }
执行上面示例代码,得到以下结果 -
1 One Original Map: {One=1, Three=3, Two=2} Modified Map: {Three=3, Two=2} Inversed Map: {2=Two, 3=Three}
相关问答
更多-
流畅的NHibernate:如何创建一对多的双向映射?(Fluent NHibernate: How to create one-to-many bidirectional mapping?)[2021-07-22]
要在“详细信息”表中获取与非空外键列的双向关联,您可以在DetailsMap类中添加建议的Owner属性,参考(...)CanNotBeNull()映射,并将Summary结束反向。 为避免两个关联方向有两个不同的外键列,您可以手动指定列名称,也可以以两个方向给出相同列名称的方式命名属性。 在这种情况下,我建议将Details.Owner属性重命名为Details.Summary。 我通过增量生成了Summary id,以避免在插入表时出现问题,因为Summary currenty除了id之外没有列。 域: ... -
你正在寻找一个multimap,而且两个commons集合和Guava都有几个实现。 Multimaps允许通过维护每个键的值的集合来实现多个键,即您可以将单个对象放在地图中,但是您可以检索一个集合。 如果您可以使用Java 5,我更喜欢Guava的Multimap因为它是泛型感知的。 You are searching for a multimap, and indeed both commons-collections and Guava have several implementations for ...
-
Apache Commons vs. Guava(以前的“Google Collections”)[关闭](Google Guava vs. Apache Commons [closed])[2023-01-15]
在我看来,更好的选择是Guava (以前称为Google收藏): 它更现代(有泛型) 它绝对遵循Collections API要求 它积极维护 CacheBuilder和它的前身MapMaker只是很棒的 Apache Commons Collections也是一个很好的库,但是它一直未能提供泛型启用版本(这在我看来是一个集合API的一个主要缺点),一般似乎是在维护/不做- 很多工作在它的模式最近的Commons Collections已经收拾了一些蒸汽,但它有一些追赶。 。 如果下载大小/内存占用/代码大 ... -
使用非整数计数的Map Map [2024-02-10]
您可以使用java-8引入的新的Map api 合并 : Mapcounts = new HashMap<>(); counts.merge("sugar", BigDecimal.valueOf(2.3), BigDecimal::add); counts.merge("salt", BigDecimal.valueOf(4.5), BigDecimal::add); counts.merge("pepper", BigDecimal.valueOf(1.8), ... -
在Nhibernate中映射两个相同类型的双向集合(Mapping two bidirectional collections of the same type in Nhibernate)[2022-10-14]
如果您选择使用单个映射,则可以将Rays1和Rays2设置为光线列表中的过滤器。 public virtual ICollection Rays1 {return Rays.Where()}; If you choose to go with a single mapping, then you can make the Rays1 and Rays2 as filters on a Rays list. public virtual ICollection Rays1 { return Rays.Wher ... -
如果您要构建自定义实现,几乎可以肯定,正确的方法是构建自己的自定义哈希表并维护用于跟踪删除的ReferenceQueue 。 If you're up for building a custom implementation, almost certainly the right way to do it will be to build your own custom hash table and maintain a ReferenceQueue that's used to track removal ...
-
在语言或库(AFAIK)中没有这样的东西,但它们很容易实现:只需在struct组合两个映射并确保它们保持同步。 唯一的问题是以通用方式编写这些内容很困难,但可以使用interface{} : type BidirMap struct { left, right map[interface{}]interface{} } func (m *BidirMap) Insert(key, val interface{}) { if _, inleft := left[key]; inleft { ...
-
使用Apache Commons Collections中的MultiValueMap(Using a MultiValueMap from Apache Commons Collections)[2024-01-03]
MultiValueMap是一个相当简单的地图装饰器。 它会覆盖put方法并注入集合而不是实际值。 在获取的情况下,它从底层地图获取集合。 在第二个示例中,您正在装饰填充的地图,因此当MultiValueMap尝试获取您的密钥的集合时,它会变长: public Collection getCollection(Object key) { return (Collection) getMap().get(key); } MultiValueMap is a fairly simple map d ... -
由于您使用的是Maven,因此您可以在pom.xml为json-lib工件使用依赖项排除 :
net.sf.json-lib json-lib 2.4 jdk15 转换集合对我来说似乎非常糟糕。 我建议使用Google Guava 。 它的Lists.transform(List,Function)返回一个由原始List和映射函数支持的视图,因此您实际上并没有更改任何内容。 以下是您的代码的样子: class TotalServiceImpl implements TotalService{ private static final FunctionPRICING_DTO_TRANSFORMER = ...