Java 如何访问映射的结束元素?
我有这个方法:Java 如何访问映射的结束元素?,java,Java,我有这个方法: public String nodePropertyGenerator(Map<String,Object> properties){ String prop=""; for(Map.Entry<String, Object> entry : properties.entrySet()) { prop += entry.getKey() + ":'" +entry.getValue()+"' ,";
public String nodePropertyGenerator(Map<String,Object> properties){
String prop="";
for(Map.Entry<String, Object> entry : properties.entrySet()) {
prop += entry.getKey() + ":'" +entry.getValue()+"' ,";
Iterator iterator = properties.entrySet().iterator();
}
return prop;
}
所以我想检查我的映射元素是否是end元素,它从字符串的末尾删除“,”。如何做到这一点。请帮帮我。感谢一种方法是添加一个
boolean
变量,在进入循环之前将其设置为true
,并使用它在添加下一个组件之前确定是否需要逗号,如下所示:
name:'hossein' , age:'24' , address:'khorram'
boolean isFirst = true;
StringBuilder res = new StringBuilder();
for (Map.Entry<String, Object> entry : properties.entrySet()) {
if (!isFirst) {
res.append(", ");
}
isFirst = false;
res.append(entry.getKey());
res.append(":'");
res.append(entry.getValue());
res.append("'");
}
StringJoiner stringJoiner = new StringJoiner("' ,");
for(Map.Entry<String, Object> entry : properties.entrySet()) {
stringJoiner.add(entry.getKey() + ":'" +entry.getValue());
}
return stringJoiner.toString();
boolean isFirst=true;
StringBuilder res=新的StringBuilder();
对于(Map.Entry:properties.entrySet()){
如果(!isFirst){
决议附件(“,”);
}
isFirst=false;
res.append(entry.getKey());
res.append(“:”);
res.append(entry.getValue());
决议附加(“”);
}
请注意,对循环中的不可变字符串使用串联运算符效率低下。您应该改用
StringBuilder
。您无法判断当前迭代是否是最后一次迭代。我建议您使用StringBuilder
而不是重复的字符串连接,然后只修剪末尾的长度:
StringBuilder builder = new StringBuilder();
for (Map.Entry<String, Object> entry : properties.entrySet()) {
builder.append(entry.getKey())
.append(":'")
.append(entry.getValue())
.append("' ,");
}
if (builder.length() > 0) {
builder.setLength(builder.length() - 2);
}
return builder.toString();
StringBuilder=新建StringBuilder();
对于(Map.Entry:properties.entrySet()){
builder.append(entry.getKey())
.append(“:”)
.append(entry.getValue())
.附加(“,”);
}
如果(builder.length()>0){
builder.setLength(builder.length()-2);
}
返回builder.toString();
Java 8有一个类来实现这一点:
您可以这样使用它:
name:'hossein' , age:'24' , address:'khorram'
boolean isFirst = true;
StringBuilder res = new StringBuilder();
for (Map.Entry<String, Object> entry : properties.entrySet()) {
if (!isFirst) {
res.append(", ");
}
isFirst = false;
res.append(entry.getKey());
res.append(":'");
res.append(entry.getValue());
res.append("'");
}
StringJoiner stringJoiner = new StringJoiner("' ,");
for(Map.Entry<String, Object> entry : properties.entrySet()) {
stringJoiner.add(entry.getKey() + ":'" +entry.getValue());
}
return stringJoiner.toString();
触摸更快。:)+1应该是
builder.length()-2
?@tobias\u k:哎呀,是的,对不起。修复。返回prop.replaceAll(“,$”,”)代码>??[参考这一条,这可能会解决您的问题][1][1]:它成功了。谢谢我的朋友。我很高兴你的帮助。祝你好运