java 分组
对studentList 中的学生名字进行分组
// 进行分组
Map<String ,List<Student>> hisMap = Group.group(studentList, new GroupBy<String>() {
@Override
public String groupby(Object obj) {
Student d = (Student)obj ;
return d.getName() ; // 分组依据为业务名字
}
}) ;
附:
import java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Set;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
/**
* 集合分组测试
* @author ZhangLiKun
* @mail likun_zhang@yeah.net
* @date 2013-4-23
*/
public class Group {
/**
* 分組依據接口,用于集合分組時,獲取分組依據
* @author ZhangLiKun
* @title GroupBy
* @date 2013-4-23
*/
public interface GroupBy<T> {
T groupby(Object obj) ;
}
/**
*
* @param colls
* @param gb
* @return
*/
public static final <T extends Comparable<T> ,D> Map<T ,List<D>> group(Collection<D> colls ,GroupBy<T> gb){
if(colls == null || colls.isEmpty()) {
System.out.println("分組集合不能為空!");
return null ;
}
if(gb == null) {
System.out.println("分組依據接口不能為Null!");
return null ;
}
Iterator<D> iter = colls.iterator() ;
Map<T ,List<D>> map = new HashMap<T, List<D>>() ;
while(iter.hasNext()) {
D d = iter.next() ;
T t = gb.groupby(d) ;
if(map.containsKey(t)) {
map.get(t).add(d) ;
} else {
List<D> list = new ArrayList<D>() ;
list.add(d) ;
map.put(t, list) ;
}
}
return map ;
}
public static void main(String args[]) {
// 准备一个集合
final int loop = 10 ;
List<Data> list = new ArrayList<Data> () ; // size=8 * loop
list.add(new Data().setId(1L).setCourseId(200010L).setContent("AAA")) ;
list.add(new Data().setId(2L).setCourseId(200010L).setContent("BBB")) ;
list.add(new Data().setId(3L).setCourseId(200011L).setContent("CCC")) ;
list.add(new Data().setId(4L).setCourseId(200011L).setContent("DDD")) ;
list.add(new Data().setId(5L).setCourseId(200010L).setContent("EEE")) ;
list.add(new Data().setId(6L).setCourseId(200011L).setContent("FFF")) ;
list.add(new Data().setId(7L).setCourseId(200010L).setContent("GGG")) ;
list.add(new Data().setId(8L).setCourseId(200012L).setContent("HHH")) ;
// 进行分组
Map<Long ,List<Data>> map = group(list, new GroupBy<Long>() {
@Override
public Long groupby(Object obj) {
Data d = (Data)obj ;
return d.getCourseId() ; // 分组依据为课程ID
}
}) ;
Set set = map.entrySet();
Iterator i = set.iterator();
while(i.hasNext()){
Map.Entry<Long ,List<Data>> entry1=(Map.Entry<Long ,List<Data>>)i.next();
System.out.println("key="+entry1.getKey());
List<Data> list2 = entry1.getValue();
for(Data d : list2){
System.out.println("content=" +d.getContent());
}
}
}
}
阅读更多
声明:该文观点仅代表作者本人,入门客AI创业平台信息发布平台仅提供信息存储空间服务,如有疑问请联系rumenke@qq.com。
- 上一篇:没有了
- 下一篇:没有了