【问题标题】:TreeMultimap doesn't allow null or empty values?TreeMultimap 不允许空值或空值?
【发布时间】:2013-06-03 02:09:12
【问题描述】:

我想要重复值+自然顺序+空,哪个集合支持这些功能?

我尝试过 Multihashmap 和 TreeMultimap。 Treemultimap 不允许空值,即使我有键,但它允许...

public static void main(String[] args) { 
    TreeMultimap<String, String> mp = TreeMultimap.create();
    StringBuilder b = new StringBuilder();
    mp.put("a", "10"); 
    mp.put("a", "11"); 
    mp.put("a", "12"); 
    mp.put("b", "13"); 
    mp.put("c", "14"); 
    mp.put("e", "");
    mp.put("b", "1");
    mp.put("b", "2");
    mp.put("b", "3");
    List list = null; 
    for(String key : mp.keySet())  
    {
        System.out.println("mp.values()"+mp.values());
        int itemcount = mp.size();
        System.out.println(itemcount);

    }

预期的输出格式为

a 10 11 12 
a 10 11 12
a 10 11 12
b 13 1 2 3
b 13 1 2 3
b 13 1 2 3
b 13 1 2 3
c 14
e

【问题讨论】:

  • 你为什么用oraclesql标记这个?如果与这些标签有关系,请在文中提及。否则它们不适用。
  • 我只是想知道,过去 3 个小时我没有得到任何反馈。但通常在 stackoverflow 中的响应非常快。
  • 这就是为什么你添加不相关的标签来获得更多输入的原因?这是对系统的滥用。相反,请尝试使用其他发现或详细信息来更新您的问题(例如,您的代码的实际输出是什么?)
  • 是的,前端层看起来很难实现这个场景。这就是我添加 sql 的原因,以获得上述格式的结果集 sa。

标签: java collections guava


【解决方案1】:

Multimap 的工作方式非常刻意。将空的String 和普通的String 放入Multimap 完全没有区别,Multimap 会将没有任何值的键视为完全不存在。请阅读 Guava wiki 中的Multimap Is Not A Map

【讨论】:

  • 实际项目数为 9 但以上输出为 8 。它消除了空值行。
  • mp.values()[10, 11, 12, 1, 2, 3, 14, ] 8
  • 但如果为空我也需要值
  • 什么? [10, 11, 12, 1, 2, 3, 14, ] 中的元素数为 8。这是正确答案,它包括空值。不清楚你想要什么。
  • 不,我也想要空值..因为键总数为 9 但值总数为 8 。看程序,有一个键e,总计数不包括e元素。因为我们计算了mp对象的大小。它应该返回9。
猜你喜欢
  • 2012-08-12
  • 2011-07-14
  • 2013-05-11
  • 1970-01-01
  • 2013-12-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多