1.类实现Comparable<>接口
public class Book implements Comparable<Book>{
private String bookname;
private Double unitPrice;
public String getBookname() {
return bookname;
}
public void setBookname(String bookname) {
this.bookname = bookname;
}
public Double getUnitPrice() {
return unitPrice;
}
public void setUnitPrice(Double unitPrice) {
this.unitPrice = unitPrice;
}
public Book(String bookname, Double unitPrice) {
this.bookname = bookname;
this.unitPrice = unitPrice;
}
public Book() {
super();
}
//重写compareTo方法,按照unitPrice升序排序,降序的话将两个返回值互换即可
@Override
public int compareTo(Book book) {
if(book.getUnitPrice()-this.unitPrice>=0){
return -1;
}
return 1;
}
//重写toString方法,输出Book属性
@Override
public String toString() {
return "Book [bookname=" + bookname + ", unitPrice=" + unitPrice + "]";
}
}
public class CollectionsDemo {
@Test
public void test(){
List<Book> books =new ArrayList<Book>();
books.add(new Book("JAVA",100.00));
books.add(new Book("JAVA",50.00));
books.add(new Book("JAVA",70.00));
books.add(new Book("JAVA",90.00));
//未排序的集合
printInfo(books);
System.out.println("---------按照unitPrice排序后---------");
//排序
Collections.sort(books);
printInfo(books);
}
public void printInfo(List<Book> books){
for(Book book:books){
System.out.println(book);
}
}
}
2.Collections.sort(list,new Comparator<E>() {}
public int compare(Double o1, Double o2) {TODO//待实现}重写方法
public class CollectionsDemo {
@Test
public void test() {
List<Double> listStr=new ArrayList<Double>();
listStr.add(123.00);
listStr.add(789.00);
listStr.add(456.00);
Collections.reverse(listStr);
System.out.println("排序前");
for(Double str:listStr) {
System.out.println(str);
}
//按照unitPrice升序排序,降序的话将两个返回值互换即可
Collections.sort(listStr,new Comparator<Double>() {
@Override
public int compare(Double o1, Double o2) {
// TODO Auto-generated method stub
return o1>o2?1:-1;
}
});
System.out.println("排序后");
for(Double str:listStr) {
System.out.println(str);
}
}
}