关于Collections工具类对集合中数据的排序,这道题目不是很懂,初学者。

图片说明

这道题目中的第六题,对于我来说有些复杂,没有思绪,希望得到一些解释,最好带有代码和注释。谢谢谢谢 JAVA学习

package com.example.springboot;

import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;

/**
 * @创建时间: 2019/6/4
 * @描述: Test
 */
public class Test {


    public static void main(String[] args) {
        Book b1=new Book("Web程序设计",69.0,"张三");
        Book b2=new Book("Java程序设计",79.0,"李四");
        Book b3=new Book("J2EE程序设计",59.0,"王五");
        List<Book> list=new ArrayList<>();
        list.add(b1);
        list.add(b2);
        list.add(b3);
        for (Book item:list){
            System.out.println("书名:"+item.getName()+",价格:"+item.getPrice());
        }
//        list=list.stream().collect(Collectors.toList());
        Collections.sort(list, new Comparator<Book>() {
            @Override
            public int compare(Book o1, Book o2) {
                // 升序
                return o1.getPrice()>o2.getPrice()?1:-1;
                // 降序
//                return o1.getPrice()<o2.getPrice()?1:-1;
            }
        });
        for (Book item:list){
            System.out.println("书名:"+item.getName()+",价格:"+item.getPrice());
        }
    }
}

class Book {
    private String name;
    private double price;
    private String author;

    public Book(String name, double price, String author) {
        this.name = name;
        this.price = price;
        this.author = author;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public double getPrice() {
        return price;
    }

    public void setPrice(double price) {
        this.price = price;
    }

    public String getAuthor() {
        return author;
    }

    public void setAuthor(String author) {
        this.author = author;
    }
}

        Collections.sort(list, new Comparator<Book>() {
        @Override
        public int compare(Book o1, Book o2) {
            return (int) o1.getPrice() - o2.getPrice();
        }
    });