java如何使用数组按字母顺序排列字符串。排序()?
我正在为考试复习问题,其中一个问题要求我按书名的字母顺序排列。我被要求忽略“the”一词,如果它出现在标题的开头。我的问题是,有没有一种方法可以对书籍的标题顺序进行排序,同时使用数组忽略“the”。排序()
最初,我将书籍放入一个名为书籍的数组列表中,然后应用:
Arrays.sort(books);
它起作用了,但只是在某种程度上,因为它不会忽略“的”。相反,最好是:
public class booktest {
public static void main(String[] args) {
System.out.println("Enter the title of your book: "); // The Great Gatsby
String book = IO.readString();
if(book.substring(0, 3).equalsIgnoreCase("the")){
book = book.substring(4);
}
System.out.println(book); // Output: Great Gatsby
然后比较每本书的前几个字母,输出升序
我想知道是否有一个更简单的方法来做这件事。如有任何线索或建议,将不胜感激。多谢各位
# 1 楼答案
你可以通过一个定制的比较器来实现这一点。您可以使用基于SDK的任何一个
使用lambda表达式的比较器
Java SDK的Comaprator v<;八,
代码片段
结果排序列表:
希望这有帮助
# 2 楼答案
你得稍微小心一点
book.substring(0, 3)
为长度小于3的字符串抛出StringIndexOutOfBoundsException
李>"the"
开头的标题不一定以“the”开头。例如,它可以以“There”开头李>如果您使用的是Java 7或更早的版本,我会创建一个类似这样的单独方法
然后你可以使用
在Java8中,您不需要像只需这样的助手方法
完整示例(Java 8版本):
输出是