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;
}