当前位置: 首页 > 知识库问答 >
问题:

是否存在具有不同值类型的multimap

危钱明
2023-03-14

我的应用程序需要一个multivaluemap,它的键有两种类型的值,比如List和String。Map可以返回所有值或一个基于类型参数的值,如get(key,type)中的值。

在Spring或apache MultiValueMap中找不到这样特性。是否有其他库提供这种数据结构,或者我必须实现我自己的?

共有1个答案

廖夜洛
2023-03-14

在Java8中添加具有不同值的lamda表达式是很容易的。下面是示例代码。你可以试一试。

public class TestMultiMap<K, V> {

    private final Map<K, Set<V>> multiValueMap = new HashMap<>();

    public void put(K key, V value) {
        this.multiValueMap.computeIfAbsent(key, k -> new HashSet<>()).add(value);
    }   
    public Set<V> get(K key) {
        return this.multiValueMap.getOrDefault(key, Collections.emptySet());
    }
}

computeIFEstant()方法接受一个键和一个lambda。如果该键不存在,computeIfAstant()将运行并创建新的HashMap。

getOrDefault()方法返回值,如果发现键为null,则返回空集。

若要使用此

TestMultiMap<String,Object> testMultiMap = new TestMultiMap<>();
testMultiMap.put("Key 1", new Object());
testMultiMap.put("Key 2", "String 1");
testMultiMap.put("Key 3", 1);
 类似资料:
  • 问题内容: 我需要布尔数组的紧凑表示形式,Python是否具有内置的位域类型,还是需要找到其他解决方案? 问题答案: 当我最近有类似需求时,Bitarray是我找到的最佳答案。它是C的扩展(比纯Python的BitVector快得多),并将其数据存储在实际的位域中(因此,内存效率是numpy布尔数组的八倍,后者似乎每个元素使用一个字节。)

  • 问题内容: 我今天遇到了与此类似的代码。 似乎暗示数据类型信息可以与NULL值关联。这是否将元数据附加到将其标识为指定数据类型的NULL值? 这篇文章详细介绍了一种在SqlServer中查找数据类型的方法,但是当我尝试以下行时,它以NULL的形式返回: 问题答案: 在SQL Server中,是在默认情况下所有我能想到的场景。您可以使用以下代码确定这一点: 结果: 在将其放入表中或将其与某些上下文元

  • 问题内容: 假设我有一个类A,而B,C,D是从A派生的。 如果我想知道所引用的对象的类型是什么,可以声明: 这是因为我确定从A派生的类只有B,C和D。 但是,如果我只想检查两个引用是否指向同一种对象,该怎么办? 所以像这样: 但是当然语法是错误的,如何在没有1000 if-else的情况下进行检查? 问题答案: 你的意思是 即使和属于相同的特定类,也应返回true 。 但是,如果与进行比较,则此方

  • 问题内容: 例如: 因为json数组被解码为go数组,并且go数组需要显式定义类型,所以我不知道如何处理它。 问题答案: 首先,json无效,对象必须具有键,因此它应该类似于或just 。 而当您处理多种随机类型时,只需使用即可。

  • 问题内容: 如果您的类路径中有两个jar,其中包含同一个类的不同版本,则类路径的顺序就变得至关重要。 我正在寻找一种可以检测并标记给定类路径或文件夹集中的潜在冲突的工具。 当然可以启动一个脚本: 稍后使用一些巧妙的sort / uniq / diff / grep / awk很有潜力,但是我想知道是否有人知道任何现有的解决方案。 问题答案: JBoss 的Tattletale工具是另一个候选者:“

  • 我在Eclipse中有一个动态web项目,我在GlassFish4上运行。在项目中,下面给出了一个index.jsp文件。当我在服务器上运行这个jsp时,我得到错误: