执行以下操作时:
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]")
有没有方法显示没有方括号的结果?
答案 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"))