我从文本文件中读取教室名称(“ B106”),并将其保存在数组列表中。
我需要按字母,然后按数字排序该数组。
我读到一些有关使用Collections / Comparator的信息,但是我无法成功实现它们,该怎么办?

例如:
输入:
“ B106”,“ D111”,“ A201”,“ B102”

输出:
“ A201”,“ B102”,“ B106”,“ D111”

我在Core_Salas类中管理文件

public class Core_Sala {

//---------------------------------------------------------------------------
public static ArrayList<Sala> Sala = new ArrayList<Sala>();
private static File SF = new File("Salas.txt");
public static void LerSalas()
{

    try
    {
        if(SF.exists()==true)
        {
            String[]parts;
            Sala.clear();//Array list limpar
            Scanner inputFile = new Scanner(SF);
            while (inputFile.hasNextLine()) {
                String line = inputFile.nextLine();
                Sala s1 = new Sala(line);
                Sala.add(s1);
            }
            inputFile.close();
        }
    } catch (FileNotFoundException e)
    {
        e.printStackTrace();
    }
    if(SF.exists()==false)
    {
        PrintWriter out = null;
        try
        {
            out = new PrintWriter(SF);

        }catch (FileNotFoundException e) {
            JOptionPane.showMessageDialog(null, "O ficheiro de utilizadores estava danificado ou era inexistente, foi criado um novo com o utilizador admin!");
        }
        out.close();
    }
}
}


具有getter设置程序和构造函数的Sala类

public class Sala {
private String Salas;

public Sala(String salas)
{
    this.Salas=salas;
}
public String getSalas() {
    return Salas;
}
public void setSalas(String salas) {
    Salas = salas;
}

@Override
public String toString()
{
    return Salas;
}
}

最佳答案

你可以试试这个

 public static void main(String[] args) {
    LerSalas();
    Collections.sort(salaData, new Comparator<Sala>() {
        @Override
        public int compare(Sala o1, Sala o2) {
            return o1.getSalas().compareTo(o2.getSalas());
        }
    });
    salaData.stream().forEach(System.out::println);
}


请让我知道这对你有没有用

10-06 09:46