一个List怎么样分成多个List?比如说我有一个大StudentList,而我要把StudentList按班级分成很多个小的List,而每个Student都有语文成绩,分成小的List的时候还要按语文成绩的高低进行排序。请高手们帮帮忙!!!
解决方案 »
- java thread如何理解
- 怎么判断乱码?
- 编译时 oracle.sql.BLOB 中的 getBinaryOutputStream() 已过时
- java中怎样设置环境变量?
- 一简单问题提问
- 请教static和线程的问题??
- 请教一个Swing的窗口开发技术问题.
- DOS下的JAVA编辑器是用来干什么的,编出什么东西算是学会JAVA,可以出去应聘啊?
- [JDBC] 运行出现如下异常 java.sql.SQLException: Io 异常: Got minus one from a read call
- 那里还有人气较旺的有关java的论坛
- java布局,让控件从上到下显示的问题
- 关于拓扑发现后数据展现的问题,在线等!
List class1List=new ArrayList();
class1List.add(80);
class1List.add(70);
class1List.add(90);
class1List.add(38);
class1List.add(46);
Collections.sort(class1List);
studentlist.add(class1List);
列表嵌套
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Random;public class jiecheng { public static void main(String[] args) {
List<List<Student>> studentList = new ArrayList<List<Student>>();
List<Student> list1 = new ArrayList<Student>();
int i = 0;
Random r = new Random();
while (i < 10) {
list1.add(new Student(r.nextInt(100) + 1));
i++;
}
Collections.sort(list1);
studentList.add(list1);
i = 0;
List<Student> list2 = new ArrayList<Student>();
while (i < 10) {
list2.add(new Student(r.nextInt(100) + 1));
i++;
}
Collections.sort(list2);
studentList.add(list2);
for (int j = 0; j < list1.size(); j++) {
System.out.println(list1.get(j).chengji);
}
for (int j = 0; j < list2.size(); j++) {
System.out.println(list2.get(j).chengji);
}
}
}
//你的学生信息~
class Student implements Comparable<Student> { public int chengji = 0; public Student(int pChengji) {
this.chengji = pChengji;
} public int compareTo(Student o) {
if (this.chengji > o.chengji)
return 1;
if (this.chengji == o.chengji)
return 0;
if (this.chengji < o.chengji)
return -1;
return 0;
}
}
public Map<String, TreeMap<Integer, List<User>>> sort1(List<User> l){
TreeMap<String, TreeMap<Integer,List<User>>> tm=new TreeMap<String, TreeMap<Integer,List<User>>>();
for(User u:l){
if(tm.containsKey(u.getGrade())){
TreeMap<Integer,List<User>> tem=tm.get(u.getGrade());
if(tem.containsKey(u.getChinese())){
List<User> teml=tem.get(u.getChinese());
teml.add(u);
}else{
List<User> teml=new ArrayList<User>();
teml.add(u);
tem.put(u.getChinese(), teml);
}
}else{
TreeMap<Integer,List<User>> tem = new TreeMap<Integer,List<User>>();
List<User> teml=new ArrayList<User>();
teml.add(u);
tem.put(u.getChinese(), teml);
tm.put(u.getGrade(), tem);
}
}
return tm;
}
我个人看是需要逐个遍历list
subList(int fromIndex, int toIndex)
返回列表中指定的 fromIndex(包括 )和 toIndex(不包括)之间的部分视图
返回也是list
List <CourseNode> catalogNodes = this.courseManager.getCourseNodeChildren(this.lessonManager.getLessonCatalogCourseId(), null);
Collections.sort(catalogNodes, new Comparator <CourseNode>(){
public int compare(CourseNode o1, CourseNode o2) {
return o1.getEnglishName().compareTo(o2.getEnglishName());
}
});
//思路:定义个一个变量保存上次循环的值,如果值发生变化,那边就证明是新的SID,需要创建一个新的List。
//这里循环创建List( 示意代码,你需要调试)
List <list> list = new ArrayList <List>();
Side oldSide = null;
int index = 0;
List <Side> noSameSideList = null;
for(Side sideList : 你排序好的List) {
if(index == 0) {
oldSide = sideList ;
noSameSideList = new ArrayList <Side>();
}
if(oldSide.getSide() != sideList.getSide()) {//是新的List中的Side了
list.add(noSameSideList )
noSameSideList = new ArrayList <Side>();
}else{
noSameSideList.add(sideList );
if(index == 你排序好的List.size()-1) {
list.add(noSameSideList )
}
}
index ++;
}
for循环全部的class;
有几个class new几个list;
if contains判断class存到不同的list里;
所有的list用Collection.sort排序,把list的toStringoverride一下,让他返回语文成绩
import java.sql.Timestamp;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.TreeMap;public class A {
public Map<String, TreeMap<Integer, List<User>>> sort1(List<User> l){
TreeMap<String, TreeMap<Integer,List<User>>> tm=new TreeMap<String, TreeMap<Integer,List<User>>>();
for(User u:l){
if(tm.containsKey(u.getGrade())){
TreeMap<Integer,List<User>> tem=tm.get(u.getGrade());
if(tem.containsKey(u.getChinese())){
List<User> teml=tem.get(u.getChinese());
teml.add(u);
}else{
List<User> teml=new ArrayList<User>();
teml.add(u);
tem.put(u.getChinese(), teml);
}
}else{
TreeMap<Integer,List<User>> tem = new TreeMap<Integer,List<User>>();
List<User> teml=new ArrayList<User>();
teml.add(u);
tem.put(u.getChinese(), teml);
tm.put(u.getGrade(), tem);
}
}
//http://topic.csdn.net/u/20080529/16/d1e40671-1d82-4806-8a16-eb2b97a8c676.html
return tm;
}
public static void main(String[] args) throws IOException{
List<User> l=new ArrayList<User>();
User u=new User();
u.setSid(5);
u.setGrade("3");
u.setChinese(87);
User u5=new User();
u5.setSid(5);
u5.setGrade("3");
u5.setChinese(97);
User u1=new User();
u1.setSid(1);
u1.setGrade("3");
u1.setChinese(59);
User u2=new User();
u2.setSid(1);
u2.setGrade("1");
u2.setChinese(88);
User u4=new User();
u4.setSid(1);
u4.setGrade("1");
u4.setChinese(87);
User u3=new User();
u3.setSid(4);
u3.setGrade("2");
u3.setChinese(88); l.add(u);
l.add(u1);
l.add(u2);
l.add(u3);
l.add(u4);
l.add(u5);
System.out.println(new A().sort1(l));
}}
打印结果
{1={87=[ch5.User@757aef], 88=[ch5.User@d9f9c3]}, 2={88=[ch5.User@9cab16]}, 3={59=[ch5.User@1a46e30], 87=[ch5.User@3e25a5], 97=[ch5.User@19821f]}}
看一下结果,
班级1的,87分,88分,班级2的,88分,班级3的,59分,87分,97分,
绝对符合你的要求