我正在从文本文件中读取教室名称(“B106”)并将其保存在数组列表中。 我需要按字母然后按数字对该数组进行排序。 我读过一些有关使用集合/比较器的内容,但我无法成功实现它们,我该怎么做?
例如: 输入: “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 Setter 和构造函数的 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);
}
请告诉我它是否适合您
关于Java - 按字母顺序和数字对对象数组列表进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37691265/