请帮忙看看下面这个程序,javac编译时说Collections.sort(strList)报错,说“找不到符号”,可是错在哪里呢
import java.util.Collections;
import java.util.ArrayList;public class TreeTester
{
public static void main(String[] args)
{
BinarySearchTree<String> names =
new BinarySearchTree<String>();
names.add("Romeo");
names.add("Juliet");
names.add("Tom");
names.add("Dick");
names.add("Harry");
names.print();
System.out.println("Expected:Dick Harry Juliet Romeo Juliet");
}
}class BinarySearchTree<T>
{
private ArrayList<T> strList;
public BinarySearchTree()
{
strList = new ArrayList<T>();
}
public void add(T str)
{
strList.add(str);
}
public void strsort()
{
Collections.sort(strList);
}
public void print()
{
strsort();
System.out.print(strList);
}
}
import java.util.Collections;
import java.util.ArrayList;public class TreeTester
{
public static void main(String[] args)
{
BinarySearchTree<String> names =
new BinarySearchTree<String>();
names.add("Romeo");
names.add("Juliet");
names.add("Tom");
names.add("Dick");
names.add("Harry");
names.print();
System.out.println("Expected:Dick Harry Juliet Romeo Juliet");
}
}class BinarySearchTree<T>
{
private ArrayList<T> strList;
public BinarySearchTree()
{
strList = new ArrayList<T>();
}
public void add(T str)
{
strList.add(str);
}
public void strsort()
{
Collections.sort(strList);
}
public void print()
{
strsort();
System.out.print(strList);
}
}
解决方案 »
- 企业开发的GUI应用程序,怎么给客户用?做成.exe的 还是?
- 请教一个连续读取的简洁算法??????????
- 搞死人的java Comm.jar包!还是有问题
- jar文件如何添加一个数据库
- 请问,怎么在Jtable中的某列加上Jcheckbox对象呢?
- 请教!Java3D中的图形报错,请大侠帮我看看!!!!!
- 如何用JFreeChart画半透明图
- 又买了一个版本的.net,又是装不上,烦也烦死了,还是java爽呀。散点分玩玩。
- 用多个connection还是单个connection好?
- 请问那位大虾知道JBuilder 3.5的注册码?先谢谢了。
- 如果采用SpringLayout布局,那么主窗口的pack()函数无法正确计算内部元素的大小???
- java awt/swing中其它线程访问UI线程控件的问题
class BinarySearchTree<T extends Comparable<? super T>> {
private List<T> strList; public BinarySearchTree() {
strList = new ArrayList<T>();
} public void add(T str) {
strList.add(str);
} public void strsort() {
Collections.sort(strList);
} public void print() {
strsort();
System.out.print(strList);
}
}
private List<T> strList;
为什么要这样写呢,ArrayList里如果放的是String类对象,String 不是已经imlements comparable了吗
API:public static <T extends Comparable<? super T>> void sort(List<T> list)根据元素的自然顺序 对指定列表按升序进行排序。列表中的所有元素都必须实现 Comparable 接口。
static <T extends Comparable<? super T>> void sort(List<T> list)
而你的class定义class BinarySearchTree<T>是随便的一个T
你这个泛型T是否实现了Comparable接口谁知道,你只是后期实例化的时候用了String,String是实现了Comparable接口,但是如果用其它类呢?其他类一定能保证实现了Comparable接口吗?这里要注意,你用的是泛型,所以Collections.sort(strList);是按泛型去解析的,因为编译时,编译器根本不知道你后来会用String去实例化。也就是说,先有方法Collections.sort(strList)的编译,才会有你后来调用方法的具体参数化,而你想在的想法刚好倒过来,先有方法调用的参数化,才有方法代码的编译,这可能吗?不编译你又哪来的调用,既然是编译,它又如何知道你后来一定就是使用String?