Java 使用可比较对 Pojo 进行排序

标签 java

以下程序的输出不是我所期望的。这个程序有什么问题吗?请提出建议。

[你好113 , 你好380 , 你好293 , 你好290 , 你好246 , 你好456 , 你好797 , 你好888 , 你好981 ]

编辑:我只想以这种方式做到这一点。不使用 collections.sort()。

   public class Sample {

    public static void main(String[] args) {
        Random random = new Random(10);

        List<Employee> employees = new ArrayList<Employee>();
        for (int i=0;i<10;i++)
        {
            Employee e = new Employee(i,"Hello"+random.nextInt(1000));
            employees.add(e);
        }
        System.out.println(employees);
    }

    }

    class Employee implements Comparable<Employee>
    {
    private int empNo;
    private String empName;

    public int getEmpNo() {
        return empNo;
    }
    public void setEmpNo(int empNo) {
        this.empNo = empNo;
    }
    public String getEmpName() {
        return empName;
    }
    public void setEmpName(String empName) {
        this.empName = empName;
    }

    Employee(int empNo,String empName)
    {
        this.empName=empName;
        this.empNo=empNo;
    }

    @Override
    public String toString() {

        return empName+" \n";
    }

    @Override
    public int compareTo(Employee o) {

        return this.getEmpName().compareTo(o.getEmpName());
    }

}

最佳答案

ArrayList 保持元素添加时的顺序。如果您想对它们进行排序,您需要创建一个使用您实现的 compareTo 的排序方法,或者只需调用 Collections.sort(employees)

我建议使用您自己的排序算法实现。您可以尝试使用插入排序quicksort,这样您就可以充分利用不使用已经实现的东西(如Collections.sort)。

您还可以使用 TreeSet 对集合自动排序,但作为 Set 您不会有重复项。

关于Java 使用可比较对 Pojo 进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18912229/

相关文章:

java - 如何在java中替换 "(double quotes) in a string with\"

java - 预期位置参数计数 : 2, 实际参数:

java - JTransforms FFT 的大小与 MATLAB 的比较

java - 如何通过 ssl 从 wsdl 生成 jax ws 工件

java - 使用 XPath 获取 XML 节点的同级节点

java - maven无法在mac osx中导入jar

java - 如何处理 hibernate 中的异常?

java - dao 的插入和更新方法不起作用

java - 调用 findChessboardCorners 时获取角的坐标

java - 如何向RList添加双元素?