JSONArray操作汇总

一、排序1.根据集合对象中某一对象属性进行排序,返回新的集合2.List进行排序,返回新的List 注意:并没有改变原始list的顺序

二、筛选1.获取集合对象中某一属性值2.获取集合对象中某一属性值并去重,返回Set集合3.筛选集合对象中某一属性值符合判断条件的对象

三、分组1.根据集合对象中某一属性进行分组

四、操作集合对象中属性值1.根据集合对象中某一特定属性条件,修改对象值

一、排序

1.根据集合对象中某一对象属性进行排序,返回新的集合

public static void main(String[] args) {

JSONArray jsonArray = JSON.parseArray("[{\"ID\":\"3\",\"NAME\":\"三\"},{\"ID\":\"2\",\"NAME\":\"二\"},{\"ID\":\"1\",\"NAME\":\"一\"}]");

System.out.println("初始化的JSONArray:" + jsonArray.toJSONString());

JSONArray newJSONArray = jsonArray.stream().sorted(

Comparator.comparingLong(

// 根据对象中的ID进行排序

e -> JSONObject.parseObject(e.toString()).getLongValue("ID")

)

).collect(Collectors.toCollection(JSONArray::new));

System.out.println("排序后的newJSONArray:" + newJSONArray.toJSONString());

}

输出结果

初始化的JSONArray:[{"ID":"3","NAME":"三"},{"ID":"2","NAME":"二"},{"ID":"1","NAME":"一"}]

排序后的newJSONArray:[{"ID":"1","NAME":"一"},{"ID":"2","NAME":"二"},{"ID":"3","NAME":"三"}]

2.List进行排序,返回新的List 注意:并没有改变原始list的顺序

public static void main(String[] args) {

List integerList1 = new ArrayList<>();

integerList1.add(1);

integerList1.add(5);

integerList1.add(7);

List integerList2 = new ArrayList<>();

integerList2.add(2);

integerList2.add(4);

integerList2.add(8);

integerList1.addAll(integerList2);

System.out.println("未排序的integerList1:" + integerList1);

List integerList3 = integerList1.stream().sorted().collect(Collectors.toList());

System.out.println("升序排序integerList3:" + integerList3);

List integerList4 = integerList1.stream().sorted(Comparator.comparingInt(Integer::intValue).reversed()).collect(Collectors.toList());

System.out.println("降序排序integerList4:" + integerList4);

// 如果list存放的是对象,可以根据对象的某一个属性排序

// List listUser = new ArrayList<>();

// List integerList5 = listUser.stream().sorted((x,y) -> x.getAge().compareTo(y.getAge)).collect(Collectors.toList());

// System.out.println("自定义排序integerList5:" + integerList5);

}

输出结果

未排序的integerList1:[1, 5, 7, 2, 4, 8]

升序排序integerList3:[1, 2, 4, 5, 7, 8]

降序排序integerList4:[8, 7, 5, 4, 2, 1]

二、筛选

1.获取集合对象中某一属性值

public static void main(String[] args) {

JSONArray jsonArray = JSON.parseArray("[{\"ID\":\"3\",\"NAME\":\"三\"},{\"ID\":\"3\",\"NAME\":\"三\"},{\"ID\":\"2\",\"NAME\":\"二\"},{\"ID\":\"1\",\"NAME\":\"一\"}]");

System.out.println("初始化JSONArray:" + jsonArray.toJSONString());

// 获取NAME属性

// 方法一 优点是可以对属性值进行操作

List list = jsonArray.stream().map(obj -> {

JSONObject jsonObj = (JSONObject) obj;

return jsonObj.getString("NAME");

}).collect(Collectors.toList());

// 方法二 代码简洁

List list = jsonArray.stream().map(e -> ((JSONObject) e).getString("NAME")).collect(Collectors.toList());

System.out.println("新的list:");

for (String l : list) {

System.out.println(l);

}

}

输出结果

初始化JSONArray:[{"ID":"3","NAME":"三"},{"ID":"3","NAME":"三"},{"ID":"2","NAME":"二"},{"ID":"1","NAME":"一"}]

新的list:

2.获取集合对象中某一属性值并去重,返回Set集合

注意:是无序的

public static void main(String[] args) {

JSONArray jsonArray = JSON.parseArray("[{\"ID\":\"3\",\"NAME\":\"三\"},{\"ID\":\"3\",\"NAME\":\"三\"},{\"ID\":\"2\",\"NAME\":\"二\"},{\"ID\":\"1\",\"NAME\":\"一\"}]");

System.out.println("去重前的JSONArray:" + jsonArray.toJSONString());

// 根据NAME去重

Set set = jsonArray.stream().map(obj -> {

JSONObject jsonObj = (JSONObject) obj;

return jsonObj.getString("NAME");

}).collect(Collectors.toSet());

System.out.println("去重后的set:");

for (String s : set) {

System.out.println(s);

}

}

输出结果

去重前的JSONArray:[{"ID":"3","NAME":"三"},{"ID":"3","NAME":"三"},{"ID":"2","NAME":"二"},{"ID":"1","NAME":"一"}]

去重后的set:

3.筛选集合对象中某一属性值符合判断条件的对象

public static void main(String[] args) {

JSONArray jsonArray = JSON.parseArray("[{\"ID\":\"3\",\"NAME\":\"三\"},{\"ID\":\"3\",\"NAME\":\"三\"},{\"ID\":\"2\",\"NAME\":\"二\"},{\"ID\":\"1\",\"NAME\":\"一\"}]");

System.out.println("初始化JSONArray:" + jsonArray.toJSONString());

// 获取ID为"3"的对象

JSONArray newJSONArray = jsonArray.stream().filter(

item -> "3".equals(

JSONObject.parseObject(item.toString()).getString("ID")

)

).collect(Collectors.toCollection(JSONArray::new));

System.out.println("新的newJSONArray:" + newJSONArray.toJSONString());

}

输出结果

初始化JSONArray:[{"ID":"3","NAME":"三"},{"ID":"3","NAME":"三"},{"ID":"2","NAME":"二"},{"ID":"1","NAME":"一"}]

新的newJSONArray:[{"ID":"3","NAME":"三"},{"ID":"3","NAME":"三"}]

三、分组

1.根据集合对象中某一属性进行分组

public static void main(String[] args) {

JSONArray jsonArray = JSON.parseArray("[{\"ID\":\"3\",\"NAME\":\"三\"},{\"ID\":\"3\",\"NAME\":\"三\"},{\"ID\":\"2\",\"NAME\":\"二\"},{\"ID\":\"1\",\"NAME\":\"一\"}]");

System.out.println("初始化JSONArray:" + jsonArray.toJSONString());

// 根据ID进行分组 这里value目前好像只能用List

Map> groupById = jsonArray.stream()

.collect(Collectors.groupingBy(item -> JSON.parseObject(item.toString()).getString("ID")));

System.out.println("JSONArray转map为:");

for (String key : groupById.keySet()) {

System.out.println("key:"+ key + ",value:" + groupById.get(key));

}

}

输出结果

初始化JSONArray:[{"ID":"3","NAME":"三"},{"ID":"3","NAME":"三"},{"ID":"2","NAME":"二"},{"ID":"1","NAME":"一"}]

JSONArray转map为:

key:1,value:[{"ID":"1","NAME":"一"}]

key:2,value:[{"ID":"2","NAME":"二"}]

key:3,value:[{"ID":"3","NAME":"三"}, {"ID":"3","NAME":"三"}]

四、操作集合对象中属性值

1.根据集合对象中某一特定属性条件,修改对象值

JSONArray类型

/**

* 将年龄大于25岁的用户的年龄替换为30岁

* @param args

*/

public static void main(String[] args) {

JSONArray jsonArray = JSON.parseArray("[{\"ID\":\"4\",\"NAME\":\"四\",\"age\":\"21\"},{\"ID\":\"3\",\"NAME\":\"三\",\"age\":\"36\"}," +

"{\"ID\":\"2\",\"NAME\":\"二\",\"age\":\"15\"},{\"ID\":\"1\",\"NAME\":\"一\",\"age\":\"42\"}]");

System.out.println("初始化JSONArray:" + jsonArray.toJSONString());

jsonArray.stream()

.filter(

item ->

// 判断年龄是否大于25

JSONObject.parseObject(item.toString()).getIntValue("age") > 25

)

.forEach(

item ->

// 将年龄替换为30

((JSONObject) item).put("age", "30")

);

System.out.println("处理后的JSONArray:" + jsonArray.toJSONString());

}

输出结果

初始化JSONArray:[{"ID":"4","age":"21","NAME":"四"},{"ID":"3","age":"36","NAME":"三"},{"ID":"2","age":"15","NAME":"二"},{"ID":"1","age":"42","NAME":"一"}]

处理后的JSONArray:[{"ID":"4","age":"21","NAME":"四"},{"ID":"3","age":"30","NAME":"三"},{"ID":"2","age":"15","NAME":"二"},{"ID":"1","age":"30","NAME":"一"}]

List集合类型

/**

* 将年龄大于25岁的用户的年龄替换为30岁

*

* @param args

*/

public static void main(String[] args) {

List listUser = new ArrayList<>();

User user1 = new User();

user1.setId(1);

user1.setAge(30);

user1.setName("一");

listUser.add(user1);

User user2 = new User();

user2.setId(2);

user2.setAge(15);

user2.setName("二");

listUser.add(user2);

User user3 = new User();

user3.setId(3);

user3.setAge(42);

user3.setName("三");

listUser.add(user3);

// 将年龄大于25岁的用户的年龄替换为30岁

listUser.stream().filter(user -> user.getAge() > 25).forEach(user -> user.setAget(30));

}

推荐文章

评论可见,请评论后查看内容,谢谢!!!评论后请刷新页面。

发表评论

返回顶部暗黑模式