Java - 按字母顺序和数字对对象数组列表进行排序

标签 java arrays sorting collections

我正在从文本文件中读取教室名称(“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/

相关文章:

java - 如何使用 Spring 创建动态菜单

c++ - 存储 strtok() token 的值?

java - 'int' 类型的大数组需要传递给通用数组和集合

arrays - 根据另一个按日期排序的数组对数组进行排序

java - 在填充ObservableList时,是否必须从数据库中加载所有记录?

JavaFX - onCloseRequest() 否决了我的 boolean 语句

java - JPA/Eclipselink 使用条件对所有列值求和

javascript - 如何使用 indexOf 在 JavaScript/jQuery 中搜索数组键

java - 选择排序不返回排序数组

r - 按字母顺序排列行