是否可以从ImmutableMultimap.keys()中删除方括号

时间:2012-08-09 19:27:35

标签: java guava

执行以下操作时:

ImmutableMultimap<Something, Something> map;
//Say I insert "Hello", "5" to the map
System.out.println(map.keys().toString());

这会打印[Hello]所以当我这样做时

if(map.keys().toString().equals("Hello"))

总是失败。我不想做

if(map.keys().toString.equals("[Hello]")

有没有方法显示没有方括号的结果?

4 个答案:

答案 0 :(得分:18)

你永远不应该使用toString()来表达任何严肃的事情!这种方法适用于检查正在发生的事情的人(例如在调试器中)以及其他任何内容。

此外,其中没有括号。map.keys()是一个集合,它的toString()方法与集合的工作方式相同。您最好通过测试map.keys.size() == 1然后检查唯一的元素来替换您的测试。

答案 1 :(得分:4)

map.keys().toString().replaceAll("[\\[\\],]","")

返回字符串,删除所有方括号和逗号

答案 2 :(得分:2)

如果你在测试中检查是否相同,那么你应该真的这样做:

System.out.println(ImmutableMultiSet.of("Hello").equals(map.keys()))

由于ImmutableMultiSet具有正确的.equals实现,因此除了map为null之外,还应该处理所有可能的情况。


如果你想要一个包含其中所有元素的String,那么请改用Joiner:

System.out.println(Joiner.on(",").join(map.keys()))

Joiner有很多选项可以用于格式化集合的各种方式。

答案 3 :(得分:1)

您可以替换字符串中的括号,也可以遍历键集并单独打印每个组件。

 ImmutableMultiset<Something> keys = map.keys();
 for(Something key : keys){
    System.out.print(key);
 }

对于你想要的条件

if(map.keys().contains("Hello"))