我正在尝试创建一个程序,可以按字母顺序对ArrayList的内容进行排序.现在我的课程中有三节课......
狗
public class Dog { private String name; public Dog(){ } public void setName(String name){ this.name = name; } public String getName(){ return this.name; } }
DogList(包含Dog类型的ArrayList)
import java.util.ArrayList; public class DogList { private ArrayListdogList; public DogList(){ DogList = new ArrayList<>(); } public void setSize(int DogSize){ for(int x = 0; x <= DogSize; x++){ DogList.add(new Dog()); } } public ArrayList getList(){ return dogList; } }
最后一个类DogSorter,它试图访问DogList ArrayList,然后尝试按字母顺序对该ArrayList的内容进行排序.
import java.util.ArrayList; import java.util.Collections; import java.util.Comparator; import java.util.List; public class DogSorter { private DogList list = new DogList(); public void sortDogs{ Collections.sort(list); } for(i = 0; i < list.length(); i++) { System.out.println(list.getList().get(i).getName(); } }
我为这篇长篇大论道歉.我的问题很简单:如何准确地对ArrayList的内容进行排序?我一直收到错误,说我正在尝试将错误的类型与我的"Collections.sort"行进行比较.如果有人可以提供帮助,请告诉我.谢谢.
编辑:要清楚,我正在尝试按存储在getName()中的字符串按字母顺序对每个对象进行排序
请按照这种方式,不要做太多的代码,在这里,我看到你搞砸了你的代码,这很容易理解.
请按照这种最简单的方式按排序顺序(Ascending/Descending)排序Dog Object的列表.
import java.util.ArrayList; import java.util.Collections; class Dog implements Comparable{ String name; Dog(String name){ this.name = name; } public String getName() { return name; } public void setName(String name) { this.name = name; } @Override public int compareTo(Dog o) { return this.name.compareTo(o.getName()); // dog name sort in ascending order //return o.getName().compareTo(this.name); use this line for dog name sort in descending order } @Override public String toString() { return this.name; } } public class DogSort { public static void main(String[] args) { ArrayList listDog = new ArrayList (); listDog.add(new Dog("doggy")); listDog.add(new Dog("aaa")); listDog.add(new Dog("bbb")); System.out.println(listDog); Collections.sort(listDog); System.out.println(listDog); } }
使用
Collections.sort(dogList, new Comparator(){ public int compare(Dog d1, Dog d2){ return d1.getName().compareTo(d2.getName()); } });
这将基于比较器比较每只狗.比较者只是比较狗的名字.
更新:适用于惯用的java 8风格
Collections.sort(dogList, (d1,d2) -> d1.getName().compareTo(d2.getName()));