我从文本文件中读取教室名称(“ 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);
}
请让我知道这对你有没有用