gpt4 book ai didi

java - 以升序形式对数组列表进行排序

转载 作者:行者123 更新时间:2023-12-02 06:04:33 25 4
gpt4 key购买 nike

al.add("1 Romeo and Juliet");
al.add("2 Juliet");
al.add("3 Romeo");
al.add("4 Mercutio");
al.add("5 Tybalt");
al.add("6 Nurse");
al.add("7 Robert Smith");
al.add("8 The Cure");
al.add("9 Suede");
al.add("10 Neil Codling");

我想在该数组列表上添加 al.add("11 Brett Anderson"),但每次我这样做时,输出总是这样的:

1 Romeo and Juliet
10 Neil Codling
11 Brett Anderson
2 Juliet
3 Romeo
4 Mercutio
5 Tybalt")
6 Nurse
7 Robert Smith
8 The Cure
9 Suede

我想要发生的是数字应该按顺序排列,从 1 到 11。我应该从 Collections.sort(arrayname); 中放置哪些代码?

最佳答案

您可以创建一个类来处理此问题:

class Book {
private int id;
private String name;
//other stuff
}

然后只需将一本新书添加到您的列表中即可:

al.add(new Book(1,"Romeo and Juliet"));

然后使用自定义比较器对其进行排序:

Collections.sort(al, new Comparator<Book>(){
@Override
public int compare(Book b1, Book b2) {
return Integer.compare(b1.getId(), b2.getId());
}
};

<小时/>另一种方法是使用 TreeMap<Integer, String>其中每个 id 都映射到一本书名。

如果您确实想继续当前的方法(我不推荐),您可以 split你的String空格并获取 split 返回的数组中的第一个元素(假设您的 String 始终采用 (numberwhateverIsAfter) 格式)。

Collections.sort(al, new Comparator<String>(){
@Override
public int compare(String b1, String b2) {
String s1 = b1.split("\\s+")[0];
String s2 = b2.split("\\s+")[0];
return Integer.valueOf(s1).compareTo(Integer.valueOf(s2));
}
});

关于java - 以升序形式对数组列表进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22407154/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com