Java - 按字母顺序和数字顺序排列带对象的数组列表

时间:2016-06-07 23:56:34

标签: java arrays sorting collections

我正在从文本文件中读取课堂名称(" 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();
    }
}
}

带吸气剂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;
}
}

3 个答案:

答案 0 :(得分:1)

Collections.sort()方法可以帮到你。

示例:

id="week2veganquantity" 
id="exampleSelect1"

答案 1 :(得分:0)

你可以试试这个

 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);
}

让我知道它是否适合你

答案 2 :(得分:0)

对于我的观点,如果你的Sala类只有一个String类型的属性,那么你不需要制作Sala Class。你可以直接将String添加到arrayList.and使用Collections.sort(),然后它将按字母顺序排序和数字。例如:

public class Test {

    public static void main(String args[]){
        List al = new ArrayList();
        al.add("B106");al.add("A201");al.add("D111");al.add("BC102");
        Collections.sort(al);
        System.out.println(al);
    }
}

但如果你必须使用Sala类,那么你可以实现Comparator或Comparable Interface。