如何在Java中对用户定义类型列表进行排序?

Sid*_*ril 1 java sorting list arraylist

我目前正在学习如何使用Java中的列表.我通过使用Collections.sort()方法遇到了列表中的字符串排序,并且工作正常.但是,当我创建用户定义的数据类型时,它不会排序并给出错误 -

"找不到合适的排序方法(List)方法Collections.sort(List,Comparator)不适用(无法从参数实例化,因为实际和形式参数列表长度不同)方法Collections.sort(List)不适用(推断类型不符合推断的声明边界:Child bound(s):Comparable)其中T#1,T#2是type-变量:T#1 extends在方法sort(List,Comparator)中声明的Object T#2 extends在方法sort(List)中声明的Comparable"

如何为用户定义的类型排序元素?

这是代码 -

代码 -

package works;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Collections;

class Child 
{
private String name;
public Child(String name)
{
    this.name=name;
}
@Override
public String toString()
{
    return name;
}
}
class LOL
{
void Meth()
{
    Child s1 = new Child("Hi");
    Child s2 = new Child("Bye");
    Child s3 = new Child("And");
    List<Child> f1 = Arrays.asList(s1,s2,s3);
    System.out.println(f1);
    System.out.println();
    Collections.sort(f1);  // This line is the erroneous line.
}
}
public class SortColl
{
public static void main(String X[])
{
    LOL l = new LOL();
    l.Meth();

}
}
Run Code Online (Sandbox Code Playgroud)

Rei*_*eus 5

ComparableChild课堂上实施

class Child implements Comparable<Child>{
    private String name;

    public Child(String name) {
        this.name = name;
    }

    @Override
    public String toString() {
        return name;
    }

    @Override
    public int compareTo(Child child) {
        return name.compareTo(child.name);
    }
}
Run Code Online (Sandbox Code Playgroud)