Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/381.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 将while循环替换为for each_Java - Fatal编程技术网

Java 将while循环替换为for each

Java 将while循环替换为for each,java,Java,在Java中,如何将下面的while循环替换为for each循环 JSONObject postParameters = new JSONObject(); Map parameterMap = httpRequest.getParameterMap(); Iterator<Map.Entry<String, String[]>> it = parameterMap.entrySet().iterator(); while (it.hasNext()) { Ma

在Java中,如何将下面的while循环替换为for each循环

JSONObject postParameters = new JSONObject();
Map parameterMap = httpRequest.getParameterMap();
Iterator<Map.Entry<String, String[]>> it = parameterMap.entrySet().iterator();
while (it.hasNext()) {
    Map.Entry<String, String[]> entry = it.next();
    if(entry.getValue().length == 1){
        postParameters.put(entry.getKey(), entry.getValue()[0].toString());
    }
    else{
        JSONArray valueList = new JSONArray();
        for(String value : entry.getValue()){
            valueList.add(value.toString());
        }
        postParameters.put(entry.getKey(), valueList);
    }
}
JSONObject后参数=新的JSONObject();
Map parameterMap=httpRequest.getParameterMap();
迭代器it=parameterMap.entrySet().Iterator();
while(it.hasNext()){
Map.Entry=it.next();
if(entry.getValue().length==1){
postParameters.put(entry.getKey(),entry.getValue()[0].toString());
}
否则{
JSONArray valueList=新的JSONArray();
for(字符串值:entry.getValue()){
valueList.add(value.toString());
}
postParameters.put(entry.getKey(),valueList);
}
}

基本上我想让它更具可读性。

您可以直接在
entrySet
上使用
ForEach
,如下所示:

JSONObject postParameters = new JSONObject();
Map parameterMap = httpRequest.getParameterMap();
for (Map.Entry<String,String[]> entry : parameterMap.entrySet()){
    if(entry.getValue().length == 1){
        postParameters.put(entry.getKey(), entry.getValue()[0].toString());
    }
    else{
        JSONArray valueList = new JSONArray();
        for(String value : entry.getValue()){
            valueList.add(value.toString());
        }
        postParameters.put(entry.getKey(), valueList);
    }
}
JSONObject后参数=新的JSONObject();
Map parameterMap=httpRequest.getParameterMap();
对于(Map.Entry:parameterMap.entrySet()){
if(entry.getValue().length==1){
postParameters.put(entry.getKey(),entry.getValue()[0].toString());
}
否则{
JSONArray valueList=新的JSONArray();
for(字符串值:entry.getValue()){
valueList.add(value.toString());
}
postParameters.put(entry.getKey(),valueList);
}
}
JSONObject后参数=新的JSONObject();
Map parameterMap=httpRequest.getParameterMap();
对于(Map.Entry:parameterMap.entrySet()){
if(entry.getValue().length==1){
postParameters.put(entry.getKey(),entry.getValue()[0]);
}否则{
JSONArray valueList=新的JSONArray();
for(字符串值:entry.getValue()){
价值清单。添加(价值);
}
postParameters.put(entry.getKey(),valueList);
}
}
正如Mustahsan所说,但是您可以去掉redudant toString()方法,最后一个
else
块可以更改为较短的版本,可以考虑一次收集整个条目值,并将其作为JSONArray放入后参数中

JSONObject postParameters = new JSONObject();
Map<String, String[]> parameterMap = httpRequest.getParameterMap();
for (Map.Entry<String, String[]> entry : parameterMap.entrySet()) {
    if (entry.getValue().length == 1) {
        postParameters.put(entry.getKey(), entry.getValue()[0]);
    } else {
        JSONArray valueList = new JSONArray();
        for (String value : entry.getValue()) {
            valueList.add(value);
        }
        postParameters.put(entry.getKey(), valueList);
    }
}