Zu den im Java Collection Framework definierten Listenimplementierungen gehören Vector, ArrayList und LinkedList. Diese Sammlungen bieten indizierten Zugriff auf Gruppen von Objekten. Sie bieten Unterstützung für das Hinzufügen und Entfernen von Elementen. Sie verfügen jedoch nicht über eine integrierte Unterstützung für das Sortieren von Elementen.
Sie können Listenelemente mit der Methode sort() in der Klasse java.util.Collections sortieren. Sie können der Methode ein List-Objekt oder eine List und einen Comparator übergeben. Wenn die Elemente in der Liste alle vom gleichen Typ sind und die Klasse die Comparable-Schnittstelle implementiert, können Sie einfach Collections.sort() aufrufen. Wenn diese Klasse Comparator nicht implementiert, können Sie zum Sortieren auch einen Comparator an die Methode sort() übergeben. Wenn Sie nicht die Standardsortierreihenfolge verwenden möchten, können Sie zum Sortieren auch einen Comparator an die Methode sort() übergeben.
1. Das verglichene Objekt implementiert die Comparable-Schnittstelle
public class Student implements Comparable { private int id; private int age; private String name; public Student(int id){ this.id=id; } public int getId() { return id; } public void setId(int id) { this.id = id; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public String getName() { return name; } public void setName(String name) { this.name = name; } public static void main(String args[]){ List<Student> list=new ArrayList<Student>(); for(int i=1000;i>0;i--){ list.add(new Student(i)); } Collections.sort(list); for(Student s: list){ System.out.println(s.getId()); } } public int compareTo(Object o) { if(o instanceof Student){ Student s=(Student)o; if(this.id>s.id){ return 1; } else{ return 0; } } return -1; } }
2. Verwenden Sie Collections.sort(Object o, Comparator c)
public class JiaMenuComparator implements Comparator{ public int compare(Object o1, Object o2) { if(null!=o1&&null!=o2) { JiaMenu menu1=(JiaMenu)o1; JiaMenu menu2=(JiaMenu)o2; if(menu1.getId()<menu2.getId()){ return 1; }else { return 0; } } return 0; } }
3 Elemente Sortieren mehrerer Attribute in (mithilfe von commons-beanutils)
In der Klassenbibliothek commons-beanutils gibt es eine BeanComparator-Klasse, die zum Sortieren von JavaBeans verwendet werden kann. Diese Klasse kann jedoch jeweils nur eine Eigenschaft sortieren. Das Folgende ist ein Beispiel für die Verwendung von BeanComparator zum Sortieren mehrerer Eigenschaften von JavaBean. Es ist sehr einfach:
import org.apache.commons.beanutils.BeanComparator; import java.util.Collections; import java.util.Comparator; import java.util.List; /** * 对 List 元素的多个属性进行排序的类 */ @SuppressWarnings({"unchecked"}) public class ListSorter { /** * List 元素的多个属性进行排序。例如 ListSorter.sort(list, "name", "age"),则先按 * name 属性排序,name 相同的元素按 age 属性排序。 * * @param list 包含要排序元素的 List * @param properties 要排序的属性。前面的值优先级高。 */ public static <V> void sort(List<V> list, final String... properties) { Collections.sort(list, new Comparator<V>() { public int compare(V o1, V o2) { if (o1 == null && o2 == null) return 0; if (o1 == null) return -1; if (o2 == null) return 1; for (String property : properties) { Comparator c = new BeanComparator(property); int result = c.compare(o1, o2); if (result != 0) { return result; } } return 0; } }); } }
Ausführlichere Erläuterungen zu Methoden zum Sortieren von Listenelementen in Java finden Sie auf der chinesischen PHP-Website für verwandte Artikel!