Mos*_*ani 5 java arrays stream java-8 java-stream
我有一个双数组,我需要使用java流将数组转换为JSONArray.我尝试使用forEach(共享可变性),这会导致数据丢失.
public static JSONArray arrayToJson(double[] array) throws JSONException{
JSONArray jsonArray = new JSONArray();
Arrays.stream(array)
.forEach(jsonArray::put);
return jsonArray;
}
Run Code Online (Sandbox Code Playgroud)
有什么方法可以使用流创建JSONArray吗?
koz*_*zmo 10
您的代码有效,但您可以这样写:
return Arrays.stream(array)
.collect(Collector.of(
JSONArray::new, //init accumulator
JSONArray::put, //processing each element
JSONArray::put //confluence 2 accumulators in parallel execution
));
Run Code Online (Sandbox Code Playgroud)
再举一个例子(创建一个Stringfrom List<String>):
List<String> list = ...
String str = this.list
.stream()
.collect(Collector.of(
StringBuilder::new,
(b ,s) -> b.append(s),
(b1, b2) -> b1.append(b2),
StringBuilder::toString //last action of the accumulator (optional)
));
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4696 次 |
| 最近记录: |