Java 如何根据姓氏对链表进行排序?

Java 如何根据姓氏对链表进行排序?,java,linked-list,Java,Linked List,我有一个程序,从控制台请求10个人的名字和姓氏,然后将他们添加到单个实体“fullName”下的链接列表中。有没有一种方法可以使用Collections.sort()根据姓而不是首名对名称进行排序。名字和姓氏的顺序需要保持。这就是我到目前为止所做的: public void requestNames(){ for(int i = 1; i < 11; i++){ // Request first name. System.

我有一个程序,从控制台请求10个人的名字和姓氏,然后将他们添加到单个实体“fullName”下的链接列表中。有没有一种方法可以使用Collections.sort()根据姓而不是首名对名称进行排序。名字和姓氏的顺序需要保持。这就是我到目前为止所做的:

public void requestNames(){

        for(int i = 1; i < 11; i++){

            // Request first name.
            System.out.print("Enter first name of friend # " + i + ":");
            String fName = scanner.nextLine();

            // Request last name.
            System.out.print("Enter last name of friend # " + i + ":");
            String lName = scanner.nextLine();

            // Concatenate first and last name and hold in fullName variable.
            String fullName = fName + " " + lName;

            myList.add(fullName);
        }
        scanner.close();
    }

    public void sortList(){
        Collections.sort(myList);
    }
public void requestNames(){
对于(int i=1;i<11;i++){
//请求名字。
System.out.print(“输入朋友的名字”#“+i+”:”);
字符串fName=scanner.nextLine();
//请求姓氏。
System.out.print(“输入朋友的姓氏”#“+i+”:”);
String lName=scanner.nextLine();
//在fullName变量中连接名字和姓氏并保留。
字符串fullName=fName+“”+lName;
myList.add(全名);
}
scanner.close();
}
公共无效分类列表(){
Collections.sort(myList);
}

是。如果您正在使用Java Collections API中的
LinkedList
,则可以为此操作编写自定义比较器

Collections.sort(myList, new Comparator<String, String>() {
    public int compare(String left, String right) {
        String leftLast = String.split("\\s")[1];
        String rightLast = String.split("\\s")[1];
        return leftLast.compareTo(rightLast);
    }
}
Collections.sort(myList,newcomparator(){
公共整数比较(左字符串、右字符串){
String leftLast=String.split(“\\s”)[1];
String rightLast=String.split(“\\s”)[1];
返回leftLast.compareTo(rightLast);
}
}

是。如果您正在使用Java Collections API中的
LinkedList
,则可以为此操作编写自定义比较器

Collections.sort(myList, new Comparator<String, String>() {
    public int compare(String left, String right) {
        String leftLast = String.split("\\s")[1];
        String rightLast = String.split("\\s")[1];
        return leftLast.compareTo(rightLast);
    }
}
Collections.sort(myList,newcomparator(){
公共整数比较(左字符串、右字符串){
String leftLast=String.split(“\\s”)[1];
String rightLast=String.split(“\\s”)[1];
返回leftLast.compareTo(rightLast);
}
}

是。如果您正在使用Java Collections API中的
LinkedList
,则可以为此操作编写自定义比较器

Collections.sort(myList, new Comparator<String, String>() {
    public int compare(String left, String right) {
        String leftLast = String.split("\\s")[1];
        String rightLast = String.split("\\s")[1];
        return leftLast.compareTo(rightLast);
    }
}
Collections.sort(myList,newcomparator(){
公共整数比较(左字符串、右字符串){
String leftLast=String.split(“\\s”)[1];
String rightLast=String.split(“\\s”)[1];
返回leftLast.compareTo(rightLast);
}
}

是。如果您正在使用Java Collections API中的
LinkedList
,则可以为此操作编写自定义比较器

Collections.sort(myList, new Comparator<String, String>() {
    public int compare(String left, String right) {
        String leftLast = String.split("\\s")[1];
        String rightLast = String.split("\\s")[1];
        return leftLast.compareTo(rightLast);
    }
}
Collections.sort(myList,newcomparator(){
公共整数比较(左字符串、右字符串){
String leftLast=String.split(“\\s”)[1];
String rightLast=String.split(“\\s”)[1];
返回leftLast.compareTo(rightLast);
}
}

以图形方式,创建一个包含您的名字和姓氏的链接列表“全名”。执行 在LinkedList上执行以下操作

  • 将全名分为两个列表,“名字”和“姓氏”包含您的名字和姓氏 名字
  • 空“姓氏”
  • 将“名字”复制到“姓氏”

  • 以图形方式创建一个名和姓组合的LinkedList“全名” 在LinkedList上执行以下操作

  • 将全名分为两个列表,“名字”和“姓氏”包含您的名字和姓氏 名字
  • 空“姓氏”
  • 将“名字”复制到“姓氏”

  • 以图形方式创建一个名和姓组合的LinkedList“全名” 在LinkedList上执行以下操作

  • 将全名分为两个列表,“名字”和“姓氏”包含您的名字和姓氏 名字
  • 空“姓氏”
  • 将“名字”复制到“姓氏”

  • 以图形方式创建一个名和姓组合的LinkedList“全名” 在LinkedList上执行以下操作

  • 将全名分为两个列表,“名字”和“姓氏”包含您的名字和姓氏 名字
  • 空“姓氏”
  • 将“名字”复制到“姓氏”

  • 有几个例子有几个例子有几个例子有几个例子有几个例子如果名字中有空格会发生什么情况(比如Mary Jane)?一个更好的方法可能是创建一个单独存储名字和姓氏的类(使用一个通过连接返回全名的方法)。然后比较器会“选择”去掉那个字符串。这样做更好的原因是名字中有空格。@BrettOkken:您必须相应地调整您的模型以支持/反映这一点。这只是一个粗略的示例,不应被视为最佳代码™ 用于这种情况。如果名字中有空格(如Mary Jane),会发生什么情况?更好的方法是创建一个单独存储名字和姓氏的类(使用一个通过串联返回全名的方法)。然后比较器会“选择”去掉那个字符串。这样做更好的原因是名字中有空格。@BrettOkken:您必须相应地调整您的模型以支持/反映这一点。这只是一个粗略的示例,不应被视为最佳代码™ 用于这种情况。如果名字中有空格(如Mary Jane),会发生什么情况?更好的方法是创建一个单独存储名字和姓氏的类(使用一个通过串联返回全名的方法)。然后比较器会“选择”去掉那个字符串。这样做更好的原因是名字中有空格。@BrettOkken:您必须相应地调整您的模型以支持/反映这一点。这只是一个粗略的示例,不应被视为最佳代码™ 用于这种情况。如果名字中有空格(如Mary Jane),会发生什么情况?更好的方法是创建一个类,分别存储名字和姓氏(使用返回的方法)