Java 按每个字符串中的最后一个单词对字符串的数组列表进行迭代并按字母顺序排列

Java 按每个字符串中的最后一个单词对字符串的数组列表进行迭代并按字母顺序排列,java,string,sorting,arraylist,iterator,Java,String,Sorting,Arraylist,Iterator,我尝试了很多解决方案,在这里我真的很挣扎 我有一个数组列表,里面满是长度不等的字符串 我需要按每个字符串中的最后一个单词的字母顺序对字符串进行排序 某些字符串输入为“未知”,而其他字符串输入为多个单词 例如: static List<String> authors = new ArrayList<>(); authors.add("Unknown"); authors.add("Hodor"); authors.add("Jon Snow"); authors.add("

我尝试了很多解决方案,在这里我真的很挣扎

我有一个数组列表,里面满是长度不等的字符串

我需要按每个字符串中的最后一个单词的字母顺序对字符串进行排序

某些字符串输入为“未知”,而其他字符串输入为多个单词

例如:

static List<String> authors = new ArrayList<>();
authors.add("Unknown");
authors.add("Hodor");
authors.add("Jon Snow");
authors.add("Sir Jamie Lannister");
sort(authors);
System.out.println(authors);
如何按每个字符串中的姓氏/单词重复此列表排序


非常感谢你的建议。在此期间,我将继续使用google。

您可以提供自定义的
比较器和调用,如


您可以提供自定义的
比较器和调用,如


在Java8中,这可能会起作用

public void sort(List<String> authors) {
    Collections.sort((l, r) -> lastWord(l).compareTo(lastWord(r); )
}

public String lastWord(String str) {
    return str.substring(str.lastIndexOf(' ') + 1);
}
public void排序(列出作者){
Collections.sort((l,r)->lastWord(l).compareTo(lastWord(r);)
}
公共字符串lastWord(字符串str){
返回str.substring(str.lastIndexOf(“”)+1);
}

在Java 8中,这可能会起作用

public void sort(List<String> authors) {
    Collections.sort((l, r) -> lastWord(l).compareTo(lastWord(r); )
}

public String lastWord(String str) {
    return str.substring(str.lastIndexOf(' ') + 1);
}
public void排序(列出作者){
Collections.sort((l,r)->lastWord(l).compareTo(lastWord(r);)
}
公共字符串lastWord(字符串str){
返回str.substring(str.lastIndexOf(“”)+1);
}

完美无瑕。感谢您的时间!完美无瑕。感谢您的时间!
[Hodor, Sir Jamie Lannister, Jon Snow, Unknown]
public void sort(List<String> authors) {
    Collections.sort((l, r) -> lastWord(l).compareTo(lastWord(r); )
}

public String lastWord(String str) {
    return str.substring(str.lastIndexOf(' ') + 1);
}