Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/349.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
使用Java8对代码执行操作_Java_Java 8 - Fatal编程技术网

使用Java8对代码执行操作

使用Java8对代码执行操作,java,java-8,Java,Java 8,我有一个方法,它迭代映射并对值执行操作,然后填充映射以返回 我的问题是,如何将其转换为Java8(在不循环的情况下执行操作) 代码: private static Map iterateAndConvertValueXmlToString(映射数据){ Map returnMap=newhashmap(); for(Map.Entry:data.entrySet()){ returnMap.put(entry.getKey(),getXmlAsString((String)entry.getVa

我有一个方法,它迭代映射并对值执行操作,然后填充映射以返回

我的问题是,如何将其转换为Java8(在不循环的情况下执行操作)

代码:

private static Map iterateAndConvertValueXmlToString(映射数据){
Map returnMap=newhashmap();
for(Map.Entry:data.entrySet()){
returnMap.put(entry.getKey(),getXmlAsString((String)entry.getValue());
}
返回地图;
}

快速伪代码可能导致以下情况-

data.entrySet().forEach((entry) -> returnMap.put(entry.getKey(), getXmlAsString((String)entry.getValue())));
return returnMap;

快速伪代码可能会导致以下情况-

data.entrySet().forEach((entry) -> returnMap.put(entry.getKey(), getXmlAsString((String)entry.getValue())));
return returnMap;
私有静态映射转换器XMLValueToString(映射数据){
返回data.entrySet().stream().collect(Collectors.toMap(
Map.Entry::getKey,
entry->getXmlAsString((String)entry.getValue())
));
}
顺便说一句:返回类型不应该是
Map
而不是
Map

私有静态映射转换器XMLValueToString(映射数据){
返回data.entrySet().stream().collect(Collectors.toMap(
Map.Entry::getKey,
entry->getXmlAsString((String)entry.getValue())
));
}

顺便说一句:返回类型不应该是
Map
而不是
Map

除非绝对需要,否则避免使用forEach,而应该选择收集器

   public static final String getXmlAsString(final Object xmlObject) {

        return xmlObject.toString();

    }

    public static final Map<String, String> xmlObjectToString(final Map<String, Object> xmlObjectsByString) {
        return xmlObjectsByString.entrySet()
                .stream()
                .collect(Collectors.toMap(Map.Entry::getKey, entry -> getXmlAsString(entry.getValue())));
    }

    public static final void main(final String... args) {

        final Map<String, Object> xmlObjectsByString = new HashMap<>();
        xmlObjectsByString.put("Mykey", "<xml/>");

        final Map<String, String> xmlStringsByString = xmlObjectToString(xmlObjectsByString);

        // {Mykey=<xml/>}
        System.out.println(xmlStringsByString);
    }
公共静态最终字符串getXmlAsString(最终对象xmlObject){
返回xmlObject.toString();
}
公共静态最终映射xmlObjectToString(最终映射xmlObjectsByString){
返回xmlObjectsByString.entrySet()
.stream()
.collect(Collectors.toMap(Map.Entry::getKey,Entry->getXmlAsString(Entry.getValue()));
}
公共静态最终void main(最终字符串…参数){
最终映射xmlObjectsByString=newHashMap();
xmlObjectsByString.put(“Mykey”和“”);
最终映射xmlObjectsByString=xmlObjectToString(xmlObjectsByString);
//{Mykey=}
System.out.println(xmlStringsByString);
}

除非绝对需要,否则不要使用forEach,而要选择收集器

   public static final String getXmlAsString(final Object xmlObject) {

        return xmlObject.toString();

    }

    public static final Map<String, String> xmlObjectToString(final Map<String, Object> xmlObjectsByString) {
        return xmlObjectsByString.entrySet()
                .stream()
                .collect(Collectors.toMap(Map.Entry::getKey, entry -> getXmlAsString(entry.getValue())));
    }

    public static final void main(final String... args) {

        final Map<String, Object> xmlObjectsByString = new HashMap<>();
        xmlObjectsByString.put("Mykey", "<xml/>");

        final Map<String, String> xmlStringsByString = xmlObjectToString(xmlObjectsByString);

        // {Mykey=<xml/>}
        System.out.println(xmlStringsByString);
    }
公共静态最终字符串getXmlAsString(最终对象xmlObject){
返回xmlObject.toString();
}
公共静态最终映射xmlObjectToString(最终映射xmlObjectsByString){
返回xmlObjectsByString.entrySet()
.stream()
.collect(Collectors.toMap(Map.Entry::getKey,Entry->getXmlAsString(Entry.getValue()));
}
公共静态最终void main(最终字符串…参数){
最终映射xmlObjectsByString=newHashMap();
xmlObjectsByString.put(“Mykey”和“”);
最终映射xmlObjectsByString=xmlObjectToString(xmlObjectsByString);
//{Mykey=}
System.out.println(xmlStringsByString);
}

收集器是否更高效?请解释为什么偏爱收集器。ForEach通过副作用发挥作用。在forEach应答中,它填充在流的内部作用域之外创建的映射。使用collect时,我们可以保证returnMap在填充之前不会发生变异。我们不能对forEach说这些。从长远来看,将forEach的使用限制在我们必须考虑副作用的时候往往更安全,也更容易推理。collect还允许我们在一个步骤中直接构造不可变的集合,进一步增强程序的安全性。@Jeff说得很好!我认为避免副作用是/将是流API最被忽视的规则。顺便说一句:您的代码中有一个小错误:
收集器。toMap
需要一个
函数作为第二个参数。所以
getXmlAsString
应该将
Map.Entry
作为参数。收集器是否更高效?请解释为什么偏爱收集器。ForEach通过副作用发挥作用。在forEach应答中,它填充在流的内部作用域之外创建的映射。使用collect时,我们可以保证returnMap在填充之前不会发生变异。我们不能对forEach说这些。从长远来看,将forEach的使用限制在我们必须考虑副作用的时候往往更安全,也更容易推理。collect还允许我们在一个步骤中直接构造不可变的集合,进一步增强程序的安全性。@Jeff说得很好!我认为避免副作用是/将是流API最被忽视的规则。顺便说一句:您的代码中有一个小错误:
收集器。toMap
需要一个
函数作为第二个参数。因此,
getXmlAsString
应该将
Map.Entry
作为参数。如果我们试图教授Java 8,并且无论如何都要制作一个新的映射,那么我们应该使用
收集器
这段代码不必要地使用了副作用(它修改了
returnMap
),这是不鼓励的。通过使用
收集器来避免这种情况!如果我们试图教授Java 8,并且我们正在制作一个新的映射,那么我们应该使用
收集器
,这段代码不必要地使用了副作用(它修改
返回映射
),这是不鼓励的。通过使用
收集器来避免这种情况!