Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/374.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在没有[…]和,分隔符的情况下打印地图中的值(字符串)?_Java_Map - Fatal编程技术网

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(“,”,”);(现在有点傻了)