给具有相同属性值的集合分组

 
package com.home;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import net.sf.json.JSONArray;

public class Test{
	private static Items items = new Items();
	private static List lists = new ArrayList<>();
	
	public static void main(String[] args) {
		List<BaseEntity> list = new ArrayList<BaseEntity>();
		BaseEntity  b1 = new BaseEntity("张三丰","18");
		BaseEntity  b2 = new BaseEntity("张辽","18");
		BaseEntity  b3 = new BaseEntity("张三","100");
		BaseEntity  b4 = new BaseEntity("李四","100");
		BaseEntity  b5 = new BaseEntity("王五","99");
		BaseEntity  b6 = new BaseEntity("马六","78");
		list.add(b1);
		list.add(b2);
		list.add(b3);
		list.add(b4);
		list.add(b5);
		list.add(b6);
		List<Map<String,Object>> listMap = JSONArray.fromObject(list);
		tst(listMap);
	}
	
	public static int tst(List<Map<String,Object>> listMap){
		Map<String, Object> map = alist(listMap);
		int i=Integer.valueOf(map.get("count").toString());
		List<Map<String,Object>> lmap =(List<Map<String, Object>>) map.get("content");
		List a = new ArrayList<>();
		items.setObj(map.get("list"));
		lists.add(map.get("list"));
		System.out.println(lists);
		if(i>0 && lmap.size()>0){
			tst(lmap);
			return i;
		}else{
			
			return 0;
		}
	}
	@SuppressWarnings("unchecked")
	public static Map alist(List<Map<String,Object>> listMap){
		List l = new ArrayList<>();
		String t1 = null;
		int count = 0;
		StringBuffer s= new StringBuffer();
		Map<String, Object> map = new HashMap<String, Object>();
		for(int i=1;i<listMap.size();i++){
			t1 = listMap.get(0).get("age").toString(); //以相同年龄进行分组
			if(listMap.get(i).containsValue(t1)){
				s.append(i+",");
				map.put("count", ++count);
			}
		}
		if("".equals(s.toString())){
			if(listMap.size()>1){
				l.add(listMap.get(0));
				listMap.remove(0);
				map.put("count", 1);
				map.put("content", listMap);
			}else{
				if(listMap.size()>0){
					l.add(listMap.get(0));
				}
				map.put("count", 0);
				map.put("content", listMap);
			}
		}else{
			s.append(0);
			String[] arr = s.toString().split(",");
			Arrays.sort(arr);
			for(int i=0;i<arr.length;i++){
				if(i>0){
					l.add(listMap.get(Integer.valueOf(arr[i].toString())-i));
					listMap.remove(Integer.valueOf(arr[i].toString())-i);
				}else{
					l.add(listMap.get(Integer.valueOf(arr[i].toString())+0));
					listMap.remove(Integer.valueOf(arr[i].toString())+0);
				}
			}
			map.put("content", listMap);
		}
		map.put("list", l);
		return map;
	}
}


这里是 BaseEntity类:

package com.home;

public class BaseEntity {
	private String name;
	private String age;
	public BaseEntity(String name, String age) {
		super();
		this.name = name;
		this.age = age;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public String getAge() {
		return age;
	}
	public void setAge(String age) {
		this.age = age;
	}
	
}

items类:

package com.home;

public class Items {
	private Object obj;

	public Object getObj() {
		return obj;
	}

	public void setObj(Object obj) {
		this.obj = obj;
	}
	
}

运行效果:

 [[{"age":"18","name":"张三丰"}, {"age":"18","name":"张辽"}], [{"age":"100","name":"张三"}, {"age":"100","name":"李四"}], [{"age":"99","name":"王五"}], [{"age":"78","name":"马六"}]]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值