2017-06-02 3055 views
-1

我需要一个键值对,并且需要遍历它,但是我需要从最后一次迭代中删除&如何确定Java Map的当前条目是否是最后一个

我键值Map对象定义为:

private Map<String, String> additionalAttributes = new HashMap<String,String>(); 

我作重复这样:

for(Entry<String,String> i : additionalAttributes.entrySet()) { 
    attributes += i.getKey() + "=" +i.getValue() + "&"; 
} 

有没有什么办法可以判断当前条目i是最后一个进入地图?每次运行时,地图的大小和内容都会有所不同,所以我需要一个动态解决方案。

+2

只是删除尾随“和”当你完成迭代。 –

+1

这就是为什么简洁的问题得到更好的答案:) – Alfabravo

+0

这个问题是封闭的,所以你的字面问题将永远得不到直接的答案。如果您的问题是您真的需要知道“最后一项”,并且您提供的示例具有欺骗性,那么您需要深入API。 entrySet()调用返回一个迭代器(这就是你正在迭代的)。迭代器有一个函数调用“hasNext()”,如果有更多项目,则返回true;当您处于最后一个项目时,则返回false。这就是人们如何确定的 - 尽管在这种情况下你是否需要字面答案是值得怀疑的。 :)(编辑错误'你的') –

回答

3

这可能是更容易让Java的流做繁重的你:

String attributes = 
    additionalAttributes.entrySet() 
         .stream() 
         .map(e -> e.getKey() + "=" + e.getValue()) 
         .collect(Collectors.joining("&")); 
+2

这没有解决OP确定迭代最后一项的请求 – lucasvw

+1

这是[XY问题](https://meta.stackexchange.com/a/66378/223467)。它回答了实际需要,而不是确定入口集中最后一个项目的实施细节。 – Mureinik

相关问题