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