2017-07-29 35 views
1

以下是我的代碼是否可以針對java 8進行優化,並且可以更高效?使用java將設置轉換爲json數組8

public String LanguageString(Set<Locale> languageSet) throws Exception { 
JSONObject json = new JSONObject(); 
JSONObject tempj = new JSONObject(); 
JSONArray jArr = new JSONArray(); 
try { 
    for (Locale locale : languageSet) { 
    if (locale != null) { 
     tempj = new JSONObject(); 
     tempj.put("lcode", locale.toLanguageTag()); 
     tempj.put("ldisplay", locale.getDisplayName()); 
     jArr.put(tempj); 
    } 
    } 
    json.put("root", jArr); 
} catch (JSONException e) { 
    // 
} 
return json.toString(); 
} 
+0

似乎很細到我,不認爲你需要做的更多。 –

+1

代碼優化/審查使用'代碼審查' - >(https://codereview.stackexchange.com/) – emotionlessbananas

+0

你目前有一個性能問題呢?如果不是,爲什麼要麻煩? – Henry

回答

2

如果你想使用Java 8和數據流API,你可以使用streammapreduce,以創建最終JSONObject,例如

public static String languageStringUsingStream(Set<Locale> locales) { 
    return new JSONObject() 
      .put("root", locales.stream() 
        .map(locale -> new JSONObject() 
          .put("lcode", locale.toLanguageTag()) 
          .put("ldisplay", locale.getDisplayName(Locale.ENGLISH)) 
        ) 
        .reduce(new JSONArray(), JSONArray::put, (a, b) -> a)) 
      .toString(); 
} 

在這裏你可以找到一個完整的例子:

https://gist.github.com/wololock/27bd296fc894f6f4594f997057218fb3