我想按一个值对JSONArray进行排序并返回已排序的数组
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了我想按一个值对JSONArray进行排序并返回已排序的数组相关的知识,希望对你有一定的参考价值。
这是我的第一个使用JSON的程序。它几乎完成,只需要按“updated_at”值排序,然后以“name”+“updated_at”的形式返回排序结果。任何人都可以帮我这个/写代码?我怎样才能做到这一点?
public class Main
public static void main(String[] args) throws Exception
ArrayWithAllRepos arrayWithAllRepos = new ArrayWithAllRepos();
String dataFromPage1 = URLReader.readUrl(AllegroURL.URL_1);
String dataFromPage2 = URLReader.readUrl(AllegroURL.URL_2);
String dataFromPage3 = URLReader.readUrl(AllegroURL.URL_3);
JSONArray jsonArrayWithDataFromPage1 = new JSONArray(dataFromPage1);
JSONArray jsonArrayWithDataFromPage2 = new JSONArray(dataFromPage2);
JSONArray jsonArrayWithDataFromPage3 = new JSONArray(dataFromPage3);
arrayWithAllRepos.addToJsonToArray(jsonArrayWithDataFromPage1);
arrayWithAllRepos.addToJsonToArray(jsonArrayWithDataFromPage2);
arrayWithAllRepos.addToJsonToArray(jsonArrayWithDataFromPage3);
arrayWithAllRepos.printArray(arrayWithAllRepos.getJsonArray());
public class AllegroURL
public static final String URL_1 = "https://api.github.com/users/allegro/repos?pagelen=1000&page=1";
public static final String URL_2 = "https://api.github.com/users/allegro/repos?pagelen=1000&page=2";
public static final String URL_3 = "https://api.github.com/users/allegro/repos?pagelen=1000&page=3";
答案
我不知道类ArrayWithAllRepos
,但你可以创建Comparator
获取两个json对象,并将它们与这个值进行比较(你可以在google中看到很多例子,这里是一个https://www.geeksforgeeks.org/comparator-interface-java/)
并在集合上使用.stream().map()
方法,以便更改输出(再次,你可以在google中看到很多例子,这里是一个https://javarevisited.blogspot.com/2018/05/java-8-filter-map-collect-stream-example.html)
如果你的集合不支持stream()
,你可以做一个简单的for,并用你的值创建新的json。
以上是关于我想按一个值对JSONArray进行排序并返回已排序的数组的主要内容,如果未能解决你的问题,请参考以下文章