Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/330.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 按字母顺序对arraylist排序_Java - Fatal编程技术网

Java 按字母顺序对arraylist排序

Java 按字母顺序对arraylist排序,java,Java,您好,我想知道如何对这个arrayList public class Librarian { public static void main(String[] args){ Library library = new Library(); library.addBook(new FictionBook("The walk through the exam", "Andreas", 0)); library.addBook(new F

您好,我想知道如何对这个
arrayList

public class Librarian {
    public static void main(String[] args){

        Library library = new Library();



        library.addBook(new FictionBook("The walk through the exam", "Andreas", 0));
        library.addBook(new FictionBook("The incredible Programmer", "John", 1));
        library.addBook(new FictionBook("The Calculator", "Pius", 1));
        library.addBook(new FictionBook("The gozzilla", "Henry", 1));
        library.addBook(new FictionBook("The game", "Pele", 0));
        library.addBook(new FictionBook("Racing on the moon", "Marco",0));
        library.addBook(new FictionBook("London Show", "William", 0));
        library.addBook(new FictionBook("Water fights", "Claudia", 1));
        library.addBook(new FictionBook("Monster and Dragons", "Woozer", 1));
        library.addBook(new FictionBook("Pencils and pins", "Xian", 0));

        for(FictionBook myFictionBook : library.library){
            System.out.println(myFictionBook.getAuthor());
        }
    }

实现一个Comparable for
VirtualBook
,然后只对
library.library
列表进行排序。

Java中的排序是通过实现
Comparable
接口来完成的,该接口基本上指示了如何比较两个对象(即,哪个“较大”,应该是最后一个,哪个“较小”,应该是第一个)。完成此操作后,
Collections.sort
将处理所有其他事务

假设您的
VirtualBook
类有一个
getTitle()
方法,您应该执行以下操作:

public class FictionBook implements Comparable<FictionBook> {
    // snipped...

    @Override
    public int compareTo(FictionBook other) {
        return getTitle().compareTo(other.getTitle());
    }
}

现在,在对
进行排序时,可以使用此
比较器
集合。sort(library,new-virtualBookComparator())
与前面提到的一样,您可以在java类中实现可比接口。一个更好的替代方案是使用外部设备

比较器比较器=新比较器(){ 公共整数比较(虚构书a、虚构书b){ 返回a.title.compareTo(b.title); } }

如果您现在想根据发行年份对书籍进行排序,那么只需实现其他比较器,并使用新的比较器即可。或者编写一个DecoratorComparator,它反转内部结果的重用

反向分拣机:

Comparator<FictionBook> inverse = new Comparator<FictionBook>() {

    public int compare(FictionBook a, FictionBook b) {
       return comparator.compare(a, b) * -1;
    }
Comparator inverse=新的比较器(){
公共整数比较(虚构书a、虚构书b){
返回比较器。比较(a,b)*-1;
}
}

实际的排序也通过Collections.sort(list,comparator)完成。
如果您想要灵活的排序解决方案,请使用comparator。

Comparable Interface…为您的VirtualBook类实现Comparable Interface,然后使用:Collection.sort(library);使用Collections.sort()时,可以让您的VirtualBook类实现Comparable接口,也可以提供自定义比较器。您的代码中没有
ArrayList
。您需要显示所需的代码,并在您尝试的内容上显示一些努力,否则您将无法在此处获得任何有用的答案。
Comparator<FictionBook> comparator = new Comparator<FictionBook>() {

    public int compare(FictionBook a, FictionBook b) {
       return a.title.compareTo(b.title);
    }
Comparator<FictionBook> inverse = new Comparator<FictionBook>() {

    public int compare(FictionBook a, FictionBook b) {
       return comparator.compare(a, b) * -1;
    }