当我System.out.println(map)使用Java时,我在stdout中得到了一个很好的输出.如何Map在不干预标准输出的情况下获取变量中相同的字符串表示形式?有点像String mapAsString = Collections.toString(map)?
当我使用JDK5时如下
ArrayList<Integer> list = new ArrayList<Integer>();
for (Integer i : list) {
//cannot check if already reached last item
}
Run Code Online (Sandbox Code Playgroud)
另一方面,如果我只是使用一个 Iterator
ArrayList<Integer> list = new ArrayList<Integer>();
for (Iterator i = list.iterator(); i.hasNext();) {
//i can check whether this is last item
if(i.hasNextItem()){
}
}
Run Code Online (Sandbox Code Playgroud)
如何检查我是否已经使用了最后一项 for (Integer i : list) {
我希望能够(漂亮地)打印我的地图内容.
他们应该有新行和缩进而不是一行; 忽略collections/iterables/etc的toString方法; 并递归到嵌套集合中.
关于地图,这对我特别感兴趣.我认为JSON可能是相关的,但我不想走那么远,或者至少 - 我不希望我的代码必须知道JSON只是为了让我打印漂亮.我有什么选择(除了自己写这个)?
有时我会发现自己复制代码以从Map中提取键和值条目(例如,在测试/调试第三方API时).
Map<String, String> someMap;
Set<String> keys = someMap.keySet();
for(int j=0;j<someMap.size();j++){
String key = (String) keys.toArray()[j];
System.out.println("key > " + key + " : value = " + someMap.get(key));
}
Run Code Online (Sandbox Code Playgroud)
我知道Groovy对此有一些很好的抽象(例如,在groovy地图中获取密钥),但我受限于POJ.当然,必须有一种更优雅,更简洁的方式来实现这一点,我的意思是Java?