qq_37469456
qq_37469456
采纳率7.1%
2017-04-26 04:09

java集合排序问题 求排序部分代码

import java.util.*;

public class Student {

    public String name;
    public int score;    
     public static  void main (String[] args) {
        System.out.println("*****录入学员信息,当录入学员的姓名分数为0时结束*****");
        Scanner input = new Scanner(System.in);
        ArrayList<Student> arraylist = new ArrayList<Student>();
        //输入学员信息



       while(true){ 
             Student student = new Student();
             System.out.println("请输入学员姓名:");
                   student.name = input.next();
                                        arraylist.add(student);
             }
             System.out.println("请输入学员分数:");
             student.score = input.nextInt();

          if(student.score==0){
                   System.out.println("结束录入!");
                   break;
                   }
                   }


        //按照成绩排序













         //输出学员信息
         System.out.println("学员的信息如下:");
         System.out.println("姓名\t分数\t");
         Iterator<Student> iterator = arraylist.iterator();
         while(iterator.hasNext()){
                Student a = iterator.next();
                System.out.println(a.name+"\t"+a.score+"\t");
      }
      }

}

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享
  • 邀请回答

6条回答

  • zhangpan_soft zhangpan_soft 4年前

    最后一楼已经接近真正解决方案了,不过我却不建议呢样解决,其实我们集合排序有两个接口,一个是Comparable,一个是Comparator
    第一个就是5楼的解决办法,下面我说第二种:
    第二种实体类什么都不需要动,只需要在你需要排序的呢个空白部分加上一部分代码,说ArrayList排序麻烦的童鞋注意了,没有比这个更简单的排序了,你说麻烦只是你还不知道原来Java里面有这个东西,
    在集合中有一个工具类Collections,这是集合工具类,里面本身就封装了集合排序,我们只需要调用双参的方法
    Collections.sort(list,
    new Comparator() {
    @Override
    public int compare(User o1,
    User o2) {
    return o1.getScore() - o2.getScore();// 升序
    //return o2.getScore()-o1.getScore();// 降序
    }
    });

    点赞 1 评论 复制链接分享
  • zhangpan_soft zhangpan_soft 4年前

    这个才是正解,Java就是不断扩充眼界的过程,眼界有时候达不到,可能一辈子都不知道某个问题还有某种解决办法,所以一定要不断扩充自己

    点赞 评论 复制链接分享
  • u013901805 卜吃糖的小孩 4年前

    Student implements Comparable
    {

            //在实体类中添加
              public int compareTo(Object obj) {// Comparable接口中的方法  
        Student b = (Student) obj;  
        return this.score - b.score; // 按score比较大小,用于默认排序  
    }  
    

    }

    点赞 评论 复制链接分享
  • sun1021873926 夕阳雨晴 4年前
    点赞 评论 复制链接分享
  • engchina engchina 4年前

    试试下面代码

    private static void sortStudents(ArrayList<Student> arraylist) {
            // 输出学员信息
            System.out.println("学员的信息如下:");
            System.out.println("姓名\t分数\t");
    
            arraylist.stream().sorted((stu1, stu2) -> stu1.score - stu2.score)
                    .forEach(stu -> System.out
                            .println(stu.name + "\t" + stu.score + "\t"));;
        }
    
    点赞 评论 复制链接分享
  • arsaycode ! 不再维护 4年前

    为什么你非得用一个ArrayList来存Student呢?(不是不能解决,就是麻烦)

    点赞 评论 复制链接分享

相关推荐