【问题标题】:How to get the size of the values in a Map?如何获取地图中值的大小?
【发布时间】:2016-06-08 12:52:10
【问题描述】:

我有一个在程序开始时加载的集合,我理所当然地认为我用作值的字符串数组对于所有条目将始终具有相同的长度,而且它至少包含 1价值。
从这些条目中,我需要获取我使用的数组的大小。截至目前,我正在这样做:

Map<String, String[]> people = new HashTable<>();
people.put("miao", new String[]{"bau","cip","muu"});
people.values().iterator().next().length; //returns 3

有没有更好的方法?

【问题讨论】:

  • 这就够了,除非你能在将第一个数组值放入 M​​ap 之前获得该长度。
  • 我应该删除问题吗?是格式错误还是什么?我在这个网站上很难理解投票...
  • 您可能应该使用HashMap 而不是哈希表(注意 little-'t')。 Hashtable 已同步。 HashMap 不是而且通常是您想要的(以避免同步成本)。对于大多数用途,Hashtable 是旧新闻。您是否考虑过使用List&lt;String&gt; 而不是String[]。同样,这通常是首选。在大多数情况下,您应该将数组视为 Java 的遗留(或优化)特性。
  • @Paul 关于同步的事情,我可能真的需要它,所以这就是我使用它的原因。根据列表...好吧,我没有考虑过。你读过你的最后一句话吗? List 是不是有点像一个包装器来存储一个简单的拆分字符串?
  • @Vale 这只是一个反对票,没什么好担心的(除非反对票的人费心给出反对票的充分理由)。

标签: java arrays dictionary hashtable


【解决方案1】:

利用 Guava 的ListMultimap:

ListMultimap<String, String> people = ArrayListMultimap.create();
people.putAll("miao", new ArrayList("bau","cip","muu");

people.get("miao").size();//returns 3

【讨论】:

  • 谢谢汤姆;我应该指定我不能确定密钥是什么。
【解决方案2】:

根据@Eran(在 cmets 中)我已经回答了我自己的问题在问题中,因此,要获取 Value 的大小(如果它是一个数组),请执行以下操作:

Map<String, String[]> people = new HashTable<>();
people.put("miao", new String[]{"bau","cip","muu"});
people.values().iterator().next().length; //returns 3

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-23
    • 1970-01-01
    相关资源
    最近更新 更多