Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/email/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java-按字母和数字顺序对数组列表中的对象进行排序_Java_Arrays_Sorting_Collections - Fatal编程技术网

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

Java-按字母和数字顺序对数组列表中的对象进行排序,java,arrays,sorting,collections,Java,Arrays,Sorting,Collections,我从文本文件中读取教室名称(“B106”),并将其保存在数组列表中。 我需要先按字母再按数字对数组排序。 我读了一些关于使用集合/比较器的书,但是我没能成功地实现它们,我该怎么做呢 例: 输入: “B106”、“D111”、“A201”、“B102” 输出: A201、B102、B106、D111 类Core_Salas,我在其中管理我的文件 public class Core_Sala { //-------------------------------------------------

我从文本文件中读取教室名称(“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();
    }
}
}
你可以试试这个

 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);
}
publicstaticvoidmain(字符串[]args){
勒萨拉斯();
Collections.sort(salaData,新的Comparator(){
@凌驾
公共整数比较(Sala o1,Sala o2){
返回o1.getSalas().compareTo(o2.getSalas());
}
});
salaData.stream().forEach(System.out::println);
}
告诉我它是否适用于您的集合。sort()方法可以帮助您

例如:

public class TestSort {
  public static void main(String args[]) {
    String init[] = {"B106", "D111", "A201", "B102"};
    List list = new ArrayList(Arrays.asList(init));
    System.out.println("Input: " + list);
    Collections.sort(list);
    System.out.println("Output: " + list);
  }
}

在我看来,如果您的Sala类只有一个属性是String类型,那么您不需要创建Sala类。您可以直接将String添加到arrayList中,并使用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接口。

如果所有字符串都遵循相同的模式,则可以按字母顺序排序。不需要解析字符串。只按字母顺序排序也能正确地处理数字吗?此外,我将尝试寻找Addo链接似乎很简单,虽然我不知道我是否被允许使用该代码,因为这是一个学校的项目,跟踪从未谈论过它。我会试试我的运气,谢谢。如果数字长度相同(或填充),它会起作用。因此,
A123
将与
A099
一起使用,而不是与
A77
一起使用。这是一个学校项目,我被迫为我必须使用该程序管理的任何内容创建一个班级,我别无选择=/,但无论如何感谢您的回复
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);
    }
}