Java 如何在没有[…]和,分隔符的情况下打印地图中的值(字符串)?
我正在打印存储在映射中的字符串值,但我不希望它打印[]或分隔符。如何仅打印值Java 如何在没有[…]和,分隔符的情况下打印地图中的值(字符串)?,java,map,Java,Map,我正在打印存储在映射中的字符串值,但我不希望它打印[]或分隔符。如何仅打印值 Iterator<String> iterator = styles.keySet().iterator(); while (iterator.hasNext()) { String key = iterator.next().toString(); String value = styles.get(key).toString(); stylePlaceHolder = value
Iterator<String> iterator = styles.keySet().iterator();
while (iterator.hasNext()) {
String key = iterator.next().toString();
String value = styles.get(key).toString();
stylePlaceHolder = value + "\n";
}
siteElements.add(stylePlaceHolder);
Iterator<String> iterator2 = libraries.keySet().iterator();
while (iterator2.hasNext()) {
String key = iterator2.next().toString();
String value = libraries.get(key).toString();
libPlaceHolder = value + "\n";
System.out.println(libraries.values().toString());
}
Iterator Iterator=styles.keySet().Iterator();
while(iterator.hasNext()){
字符串键=迭代器.next().toString();
字符串值=styles.get(key).toString();
样式占位符=值+“\n”;
}
添加(样式占位符);
迭代器迭代器2=libraries.keySet().Iterator();
while(iterator2.hasNext()){
String key=iterator2.next().toString();
字符串值=libraries.get(key).toString();
libPlaceHolder=value+“\n”;
System.out.println(libraries.values().toString());
}
生成:
03-23 17:56:56.350: I/System.out(9642143): [<script src="http://code.jquery.com/mobile/1.3.0/jquery.mobile-1.3.0.min.js"></script>
03-23 17:56:56.350: I/System.out(9642143):
, <link rel="stylesheet" href="http://code.jquery.com/mobile/1.3.0/jquery.mobile-1.3.0.
min.css" />
03-23 17:56:56.350: I/System.out(9642143): , <script src="http://code.jquery.com/jquery-1.8.2.min.js"></script>
03-23 17:56:56.350: I/System.out(9642143):
]
03-2317:56:56.350:I/System.out(9642143):[
03-23 17:56:56.350:I/System.out(9642143):
,
03-23 17:56:56.350:I/系统输出(9642143):,
03-23 17:56:56.350:I/System.out(9642143):
]
HashMap或任何map类的toString()版本会创建一个包含[]的字符串。因此您无法控制它。你能做的最好的事情就是在地图上迭代,并以你想要的方式自己打印这些值
如果您试图以类似于列表、集合或映射的java格式打印任意集合,情况也是如此
例如:
List List=new ArrayList();
增加(10);
增加(20);
系统输出打印项次(列表);
//输出为:[10,20]
HashMap或任何map类的toString()版本会创建一个包含[]的字符串。因此您无法控制它。你能做的最好的事情就是在地图上迭代,并以你想要的方式自己打印这些值
如果您试图以类似于列表、集合或映射的java格式打印任意集合,情况也是如此
例如:
List List=new ArrayList();
增加(10);
增加(20);
系统输出打印项次(列表);
//输出为:[10,20]
看起来您依赖于某个对象的toString
方法,而没有覆盖它。你还没有告诉我们你地图的值是多少
您可能需要覆盖对象的toString
方法,或者,如果该对象是另一个集合
,您也可能需要循环该方法:
final Map<String, Collection<String>> map = new HashMap<>();
for(final Entry<String, Collection<String>> entry : map.entrySet()) {
System.out.println(entry.getKey());
for(final String value : entry.getValue()) {
System.out.println(value);
}
}
final Map=new HashMap();
for(最终条目:map.entrySet()){
System.out.println(entry.getKey());
for(最终字符串值:entry.getValue()){
系统输出打印项次(值);
}
}
请注意,您可以使用增强的for循环来迭代映射
,这比在键上循环并为每个键调用get
要高效得多。看起来您依赖于某个对象的toString
方法而不重写它。你还没有告诉我们你地图的值是多少
您可能需要覆盖对象的toString
方法,或者,如果该对象是另一个集合
,您也可能需要循环该方法:
final Map<String, Collection<String>> map = new HashMap<>();
for(final Entry<String, Collection<String>> entry : map.entrySet()) {
System.out.println(entry.getKey());
for(final String value : entry.getValue()) {
System.out.println(value);
}
}
final Map=new HashMap();
for(最终条目:map.entrySet()){
System.out.println(entry.getKey());
for(最终字符串值:entry.getValue()){
系统输出打印项次(值);
}
}
请注意,您可以使用增强的for循环来迭代映射
,这比在键上循环并为每个键调用get
要高效得多。因为您只想打印样式
的值,所以不必麻烦使用键集
。由于要在循环中构造样式占位符,请使用StringBuilder
,而不是String
串联。而且,当循环得到另一个值时,它会丢弃每个值
StringBuilder b = new StringBuilder();
for(String style: styles.valueSet()) {
b.append(style).append("\n");
}
siteElements.add(b.toString());
对库执行几乎相同的操作。事实上,将上述大部分内容提取到一个方法中:
private String values(Map<?, ?> map) {
StringBuilder b = new StringBuilder();
for(Object value: map.valueSet()) {
b.append(value).append("\n");
// append can take an Object; it calls toString on it.
}
return b.toString();
}
因为您只想打印样式的值
,所以不必麻烦使用键集
。由于要在循环中构造样式占位符,请使用StringBuilder
,而不是String
串联。而且,当循环得到另一个值时,它会丢弃每个值
StringBuilder b = new StringBuilder();
for(String style: styles.valueSet()) {
b.append(style).append("\n");
}
siteElements.add(b.toString());
对库执行几乎相同的操作。事实上,将上述大部分内容提取到一个方法中:
private String values(Map<?, ?> map) {
StringBuilder b = new StringBuilder();
for(Object value: map.valueSet()) {
b.append(value).append("\n");
// append can take an Object; it calls toString on it.
}
return b.toString();
}
对regex没有爱
Map<String, String> map = new HashMap<>();
map.put("key1", "value1");
map.put("key2", "value2");
map.put("key3", "value3");
System.out.println(map.keySet());
System.out.println(map.keySet().toString().replaceAll("[\\[\\],]", ""));
System.out.println(map.values().toString().replaceAll("[\\[\\],]", ""));
对regex没有爱
Map<String, String> map = new HashMap<>();
map.put("key1", "value1");
map.put("key2", "value2");
map.put("key3", "value3");
System.out.println(map.keySet());
System.out.println(map.keySet().toString().replaceAll("[\\[\\],]", ""));
System.out.println(map.values().toString().replaceAll("[\\[\\],]", ""));
使用entrySet
方法在entryes上循环,可以更有效地在地图上循环。您甚至可以使用增强的for循环-for(最终条目:myMap.entrySet())
。您可以使用entrySet
方法在映射上更有效地循环条目。您甚至可以使用增强的for循环-for(最终条目:myMap.entrySet())
map.put(“[what,about]”,“[th,is?]”)代码>很公平,但它不是一个通用的解决方案,而是一个根据手头数据定制的解决方案。正当理由:.toString().replaceAll(“^\[”,”).replaceAll(“\]$”,“).replaceAll(“,”,”);(现在有点傻了)map.put(“[what,about]”,“[th,is?]”)代码>很公平,但它不是一个通用的解决方案,而是一个根据手头数据定制的解决方案。正当理由:.toString().replaceAll(“^\[”,”).replaceAll(“\]$”,“).replaceAll(“,”,”);(现在有点傻了)