按字母顺序对数组列表进行排序

用户名

你好想知道我该如何排序 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());
        }
    }
穆雷尼克

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

假设您的FictionBook类有一个getTitle()方法,您想做这样的事情:

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

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

然后,您可以使用Collections.sort(library)

另一种方法是确定FictionBooks没有自然排序(即,它们不是Comparable),但是由另一个类处理该顺序。这可以通过Comparator以类似的方式实现来完成

public class FictionBookComparator implements Comparator<FictionBook> {
    @Override
    public int compare(FictionBook o1, FictionBook o2) {
        return o1.getTitle().compareTo(o2.getTitle());
    }
}

现在,您可以Comparator在对library:进行排序时使用它Collections.sort(library, new FictionBookComparator())

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章