package com.xrime.innerloop.method;
import java.util.ArrayList;
import java.util.List;
/**
* 分组算法
* @author innerloop
*
*/
public class GroupByMethod {
//计算
public static List comput(List voList){
List result = new ArrayList();
//思路 第一步 获取班级列表,第二步骤 便利 获取班级学生列表
//第一步 获取班级列表
List tempClassList = new ArrayList();
if(voList!=null&&voList.size()>0){
for(int i=0;i
Vo temp = voList.get(i);
if(!GroupByMethod.isClassExit(temp, tempClassList)){
ScClass sc = new ScClass();
sc.setClassId(temp.getClassId());
sc.setClassName(temp.getClassName());
tempClassList.add(sc);
}
}
}
//第二步骤 便利 获取班级学生列表
if(tempClassList!=null&&tempClassList.size()>0){
for(int i=0;i
ScClass temp = tempClassList.get(i);
List tempStuList = new ArrayList();
for(int k=0;k
Vo cotemp = voList.get(k);
if(temp.getClassId().equals(cotemp.getClassId())){//合并
ScStudent stu = new ScStudent();
stu.setStuId(cotemp.getStuId());
stu.setStuName(cotemp.getStuName());
tempStuList.add(stu);
}
}
temp.setStuList(tempStuList);
//设置到整体返回结果中 此处后续可以扩展
result.add(temp);
temp = null;
}
}
//gc
tempClassList = null;
return result;
}
public static boolean isClassExit(Vo vo, List classList){
boolean result = false;
if(classList!=null&&classList.size()>0){
for(int i=0;i
ScClass temp = classList.get(i);
if(vo.getClassId().equals(temp.getClassId())){//已经存在,退出 不再判断
result = true;
break;
}
}
}
return result;
}
public static List getTestData(){
Vo vo1 = new Vo("1","1班","1","小明");
Vo vo2 = new Vo("1","1班","2","小王");
Vo vo3 = new Vo("2","2班","1","小孙");
Vo vo4 = new Vo("2","2班","2","小李");
List voList = new ArrayList();
voList.add(vo1);
voList.add(vo2);
voList.add(vo3);
voList.add(vo4);
return voList;
}
public static void main(String[] args) {
List result = GroupByMethod.comput(GroupByMethod.getTestData());
for(int i=0;i
ScClass temp = result.get(i);
//System.out.println(temp.toString());
}
}
}
//中间
class Vo{
private String classId;
private String className;
private String stuId;
private String stuName;
public Vo(String classId,String className,String stuId,String stuName){
this.classId = classId;
this.className = className;
this.stuId = stuId;
this.stuName = stuName;
}
public String getClassId() {
return classId;
}
public void setClassId(String classId) {
this.classId = classId;
}
public String getClassName() {
return className;
}
public void setClassName(String className) {
this.className = className;
}
public String getStuId() {
return stuId;
}
public void setStuId(String stuId) {
this.stuId = stuId;
}
public String getStuName() {
return stuName;
}
public void setStuName(String stuName) {
this.stuName = stuName;
}
}
//班级
class ScClass{
private String className;
private String classId;
private List stuList = new ArrayList();
public String toString(){
return "班级ID"+this.classId+",班级名称:"+this.className+"学生数量:"+this.stuList.size()+"||";
}
public String getClassName() {
return className;
}
public void setClassName(String className) {
this.className = className;
}
public String getClassId() {
return classId;
}
public void setClassId(String classId) {
this.classId = classId;
}
public List getStuList() {
return stuList;
}
public void setStuList(List stuList) {
this.stuList = stuList;
}
}
//学生
class ScStudent{
private String stuName;
private String stuId;
public String getStuName() {
return stuName;
}
public void setStuName(String stuName) {
this.stuName = stuName;
}
public String getStuId() {
return stuId;
}
public void setStuId(String stuId) {
this.stuId = stuId;
}
}