猿问

将 while 循环替换为每个

如何用 Java 中的每个循环替换下面的 while 循环?


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);

    }

}

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


呼啦一阵风
浏览 143回答 2
2回答

Helenr

你可以像这样ForEach直接使用entrySet:JSONObject postParameters = new JSONObject();Map parameterMap = httpRequest.getParameterMap();for (Map.Entry<String,String[]> entry : parameterMap.entrySet()){&nbsp; &nbsp; if(entry.getValue().length == 1){&nbsp; &nbsp; &nbsp; &nbsp; postParameters.put(entry.getKey(), entry.getValue()[0].toString());&nbsp; &nbsp; }&nbsp; &nbsp; else{&nbsp; &nbsp; &nbsp; &nbsp; JSONArray valueList = new JSONArray();&nbsp; &nbsp; &nbsp; &nbsp; for(String value : entry.getValue()){&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; valueList.add(value.toString());&nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; &nbsp; &nbsp; postParameters.put(entry.getKey(), valueList);&nbsp; &nbsp; }}

江户川乱折腾

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);    }}你可以摆脱多余的 toString() 方法,并且else可以将最后一个块更改为更短的版本,考虑一次收集整个条目值并将其作为 JSONArray 放入 postParameters 中。
随时随地看视频慕课网APP

相关分类

Java
我要回答