一个List怎么样分成多个List?比如说我有一个大StudentList,而我要把StudentList按班级分成很多个小的List,而每个Student都有语文成绩,分成小的List的时候还要按语文成绩的高低进行排序。请高手们帮帮忙!!!

解决方案 »

  1.   

            List studentlist=new ArrayList();
            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);
    列表嵌套
      

  2.   

    先分组,后排序,最好实现个comparato接口
      

  3.   


    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;
        }
    }
      

  4.   

    用TreeMap排序,比用List好:
    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;
    }
      

  5.   

    按班级分成很多个小的List
    我个人看是需要逐个遍历list
      

  6.   

    试试这个方法吧
    subList(int fromIndex, int toIndex) 
    返回列表中指定的 fromIndex(包括 )和 toIndex(不包括)之间的部分视图
    返回也是list
      

  7.   

    你可是用一个List的嵌套使用。比如每个班的语文成绩放在一个list1里,再将这个list1放如一个list里,这个list主要是用来存放你的list1的地方。  解析的时候首先对list进行遍历,  然后将遍历出的list1遍历即可。  至于排序你可以使用Array.sort()这个方法,具体怎么用你参照jdk1.5的API。
      

  8.   

    和我回答另一个朋友的问题差不多啊。
    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 ++;
    }
      

  9.   

    业务说的不是很明白,一个思路
    for循环全部的class;
    有几个class new几个list;
    if contains判断class存到不同的list里;
    所有的list用Collection.sort排序,把list的toStringoverride一下,让他返回语文成绩
      

  10.   

    package ch5;import java.io.IOException;
    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分,
    绝对符合你的要求