如何在java 8中迭代JSONArray

我有以下代码,它使用for loop迭代JSONArray的元素。

 import org.apache.log4j.Logger; import org.json.JSONArray; import org.json.JSONObject; import java.util.stream.IntStream; public class Pmt { private String[] patchInformation_svnRevisionpublic; private final Logger logger = Logger.getLogger(Pmt.class.getName()); private static final String COMMITS_IN_PATCH_IDENTIFIER = "patchInformation_svnRevisionpublic"; //key used to identify the commits in a patch from JSON response received from PMT private static final String KEY_STRING = "name"; private static final String VALUE_STRING = "value"; public String[] getPublicGitCommitHashes(JSONArray jsonArray) { for (int i = 0; i  patchInformation_svnRevisionpublic[j] = ((String) tempCommitsJSONArray.get(j)).trim()); logger.info(" The commits hashes obtained from WSO2 PMT are successfully saved to an array"); System.out.println("The commit Ids are"); // for printing all the commits ID associated with a patch IntStream.range(0, patchInformation_svnRevisionpublic.length).mapToObj(i1 -> patchInformation_svnRevisionpublic[i1]).forEach(System.out::println); System.out.println(); break; } } //to prevent from internaal representation by returning referecnce to mutable object String clonedPatchInformation_svnRevisionpublic[] = patchInformation_svnRevisionpublic.clone(); return clonedPatchInformation_svnRevisionpublic; } } 

如何使用Java 8的新function(如streams APIforEach执行相同的任务。 提前致谢

这相当于Java 8流API中的代码或代码。 不是100%相当,但你可以得到主要的想法。

 private static final String COMMITS_IN_PATCH_IDENTIFIER = "patchInformation_svnRevisionpublic"; //key used to identify the commits in a patch from JSON response received from PMT private static final String KEY_STRING = "name"; private static final String VALUE_STRING = "value"; public List getCommitIds (JSONArray array) { return arrayToStream(array) .map(JSONObject.class::cast) .filter(o -> o.get(KEY_STRING).equals(COMMITS_IN_PATCH_IDENTIFIER)) .findFirst() .map(o -> (JSONArray) o.get(VALUE_STRING)) .map(Main::arrayToStream) .map(commits -> commits.map(Object::toString) .map(String::trim) .collect(Collectors.toList()) ) .orElseGet(Collections::emptyList); } @Nonnull private static Stream arrayToStream(JSONArray array) { return StreamSupport.stream(array.spliterator(), false); }