我有 ABC 课
class ABC{
private List<XYZ> xyzList -- Though its list it contains single object;
private String txt;
}
class XYZ{
private long price;
}
我想根据类 XYZ 价格变量对 List abcList 进行排序。请提供按升序排序的最佳方法。
我有 ABC 课
class ABC{
private List<XYZ> xyzList -- Though its list it contains single object;
private String txt;
}
class XYZ{
private long price;
}
我想根据类 XYZ 价格变量对 List abcList 进行排序。请提供按升序排序的最佳方法。
您是否尝试过以下方法之一:
java.util.Collections.sort(List<T>)
或者
java.util.Collections.sort(List<T>, Comparator<? super T>)
一种方法是实现Comparable
接口XYZ
并覆盖compareTo
,然后Collections.sort(yourListOfXYZ)
对列表进行排序。
其他方式是使用Comparator
.
Collections.sort(xyzList, new Comparator<XYZ>() {
@Override
public int compare( XYZ e1,XYZ e2) {
return Long.valueOf(e1.getPrice()).compareTo(Long.valueOf(e2.getPrice()));
}
});
尝试这个
Collections.sort(xyzList);
来自http://java2novice.com/java-collections-and-util/arraylist/sort-comparator/的示例代码
public class MyArrayListSort {
public static void main(String a[]){
List<Empl> list = new ArrayList<Empl>();
list.add(new Empl("Ram",3000));
list.add(new Empl("John",6000));
list.add(new Empl("Crish",2000));
list.add(new Empl("Tom",2400));
Collections.sort(list,new MySalaryComp());
System.out.println("Sorted list entries: ");
for(Empl e:list){
System.out.println(e);
}
}
}
class MySalaryComp implements Comparator<Empl>{
@Override
public int compare(Empl e1, Empl e2) {
if(e1.getSalary() < e2.getSalary()){
return 1;
} else {
return -1;
}
}
}
class Empl{
private String name;
private int salary;
public Empl(String n, int s){
this.name = n;
this.salary = s;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getSalary() {
return salary;
}
public void setSalary(int salary) {
this.salary = salary;
}
public String toString(){
return "Name: "+this.name+"-- Salary: "+this.salary;
}
}
我建议您查看Comparable接口的文档。即使使用PriorityQueue也是可能的。
在您的情况下,您需要使 XYZ 实现Comparable
,提供一个Comparator<XYZ>
或更简单的选项是打开它并使用 aList<Double>
或 aSortedSet<Double>
来保持您的价格。