【发布时间】:2013-08-26 19:08:26
【问题描述】:
我目前正在学习如何使用 Java 中的列表。我遇到过使用 Collections.sort() 方法对列表中的字符串进行排序,并且效果很好。但是,当我创建用户定义的数据类型时,它不会排序并给出错误 -
“找不到适合排序的方法(列表)
方法 Collections.sort(List,Comparator) 不适用
(不能从参数实例化,因为实际参数列表和形式参数列表的长度不同)
方法 Collections.sort(List) 不适用
(推断类型不符合声明的边界)
推断:孩子
界限:可比)
其中 T#1,T#2 是类型变量:
T#1 扩展了方法 sort(List,Comparator) 中声明的 Object
T#2 扩展了方法 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();
}
}
【问题讨论】:
-
您不应该将方法的第一个字母大写(构造函数除外)。
Meth()应该是meth() -
我会记住这一点。谢谢
标签: java list sorting arraylist