Java 从文本文件中按名称列出客户

Java 从文本文件中按名称列出客户,java,Java,我正在做一个项目,在这个项目中,我的客户对文本文件有保留。我希望能够“列出客户”他们,然后让他们按照客户名称的字母顺序出现。我现在只有: public static void listCustomers(List<Customer> customers) { System.out.format("\033[31m%s\033[0m%n", "Customers"); System.out.format("\033[31m%s\033[0m%n", "=======

我正在做一个项目,在这个项目中,我的客户对文本文件有保留。我希望能够“列出客户”他们,然后让他们按照客户名称的字母顺序出现。我现在只有:

public static void listCustomers(List<Customer> customers) {  
    System.out.format("\033[31m%s\033[0m%n", "Customers");
    System.out.format("\033[31m%s\033[0m%n", "=========");
    for (Customer c : customers) {
        System.out.format("\033[33m%s\033[0m%n", "Customer"); 
        System.out.format("\033[33m%s\033[0m%n", "--------"); 
        System.out.println(c);
    }       
}   
公共静态无效列表客户(列表客户){
系统输出格式(“\033[3100万%s\033[00万%n”,“客户”);
系统输出格式(“\033[31m%s\033[0m%n”,”================”;
用于(客户c:客户){
系统输出格式(“\033[3300万%s\033[0万%n”,“客户”);
系统输出格式(“\033[330m%s\033[0m%n],”----------”);
系统输出打印ln(c);
}       
}   
这是因为它确实列出了客户,但它没有按字母顺序列出他们,因为我也喜欢他们。我对编码有点陌生,所以如果这是一种愚蠢的方式,请让我知道。谢谢:)


//然后使用与现在相同的逻辑进行打印

您可以使用
集合。排序(Comparator您可以使用Comparator进行排序,如下所示

Main.java

public class Main {

    public static void main(String[] args) {

        List<Customer> customers = new ArrayList<Customer>();

        customers.add(new Customer("001", "Namal"));
        customers.add(new Customer("002", "Lakmini"));
        customers.add(new Customer("003", "Ahas"));

        System.out.println("main().customers 1 : " + customers);

        Collections.sort(customers,new NameSorter());

        System.out.println("main().customers 2 : " + customers);

    }
public class Customer {

    public Customer(String id, String name) {
        this.id = id;
        this.name = name;
    }

    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getId() {
        return id;
    }
    public void setId(String id) {
        this.id = id;
    }

    @Override
    public String toString() {
        return this.id + "|" + this.name;
    }

    private String name = null;
    private String id = null;

}
public class NameSorter implements Comparator<Customer>{

    @Override
    public int compare(Customer o1, Customer o2) {
        return o1.getName().compareTo(o2.getName());
    }

}
NameSorter.java

public class Main {

    public static void main(String[] args) {

        List<Customer> customers = new ArrayList<Customer>();

        customers.add(new Customer("001", "Namal"));
        customers.add(new Customer("002", "Lakmini"));
        customers.add(new Customer("003", "Ahas"));

        System.out.println("main().customers 1 : " + customers);

        Collections.sort(customers,new NameSorter());

        System.out.println("main().customers 2 : " + customers);

    }
public class Customer {

    public Customer(String id, String name) {
        this.id = id;
        this.name = name;
    }

    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getId() {
        return id;
    }
    public void setId(String id) {
        this.id = id;
    }

    @Override
    public String toString() {
        return this.id + "|" + this.name;
    }

    private String name = null;
    private String id = null;

}
public class NameSorter implements Comparator<Customer>{

    @Override
    public int compare(Customer o1, Customer o2) {
        return o1.getName().compareTo(o2.getName());
    }

}
公共类名称排序器实现Comparator{
@凌驾
公共整数比较(客户o1、客户o2){
返回o1.getName().compareTo(o2.getName());
}
}

我无法发表评论,因此请检查:它说“需要包含CustomerComparator的封闭实例”如果这是明显的,很抱歉类
CustomerComparator
必须在其自己的文件中。
public class NameSorter implements Comparator<Customer>{

    @Override
    public int compare(Customer o1, Customer o2) {
        return o1.getName().compareTo(o2.getName());
    }

}