2

我有 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 进行排序。请提供按升序排序的最佳方法。

4

6 回答 6

6

您是否尝试过以下方法之一:

java.util.Collections.sort(List<T>)

或者

java.util.Collections.sort(List<T>, Comparator<? super T>)
于 2012-08-02T08:04:20.233 回答
4

一种方法是实现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()));
            }
        });
于 2012-08-02T08:04:57.680 回答
1

尝试这个

Collections.sort(xyzList);

于 2012-08-02T08:04:03.783 回答
0

来自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;
}
}
于 2012-08-02T11:00:55.753 回答
0

我建议您查看Comparable接口的文档。即使使用PriorityQueue也是可能的。

于 2012-08-02T08:04:54.820 回答
0

在您的情况下,您需要使 XYZ 实现Comparable,提供一个Comparator<XYZ>或更简单的选项是打开它并使用 aList<Double>或 aSortedSet<Double>来保持您的价格。

于 2012-08-02T08:09:03.940 回答