注册 登录
编程论坛 JAVA论坛

一个关于集合排序的问题

雪轻柔 发布于 2017-04-27 22:12, 1449 次点击
编写一个图书类Book,它包含的属性有书名(Name),作者(Author),出版社(Publisher),价格(Price).在控制台程序中,获取四本图片信息,
创建几个图书对象,让它们按照书名的价格或书名首字母排列,当我把对象添加进list集合后怎么自定义规则排序输出呢
1 回复
#2
漫步云端242017-04-28 11:36
可以借鉴下这段代码

package test.tool.gui.dbtool.util;  
  
import java.util.ArrayList;  
import java.util.Collections;  
import java.  
import java.util.List;  
  
public class Test {  
  
    public static void main(String[] args) {  
         
        List<Student> list = new ArrayList<Student>();  
         
        //创建3个学生对象,年龄分别是20、19、21,并将他们依次放入List中  
        Student s1 = new Student();  
        s1.setAge(20);  
        Student s2 = new Student();  
        s2.setAge(19);  
        Student s3 = new Student();  
        s3.setAge(21);  
        list.add(s1);  
        list.add(s2);  
        list.add(s3);  
         
        System.out.println("排序前:"+list);  
         
        Collections.sort(list, new Comparator<Student>(){  
  
            /*  
             * int compare(Student o1, Student o2) 返回一个基本类型的整型,  
             * 返回负数表示:o1 小于o2,  
             * 返回0 表示:o1和o2相等,  
             * 返回正数表示:o1大于o2。  
             */  
            public int compare(Student o1, Student o2) {  
              
                //按照学生的年龄进行升序排列  
                if(o1.getAge() > o2.getAge()){  
                    return 1;  
                }  
                if(o1.getAge() == o2.getAge()){  
                    return 0;  
                }  
                return -1;  
            }  
        });   
        System.out.println("排序后:"+list);  
    }  
}  
class Student{  
      
    private int age;  
  
    public int getAge() {  
        return age;  
    }  
  
    public void setAge(int age) {  
        this.age = age;  
    }  
    @Override  
    public String toString() {  
        return getAge()+"";  
    }  
}  
1