回 帖 发 新 帖 刷新版面

主题:[求助]为什么这里不能添加<Object>

import java.util.*;
public class TestCollections {
    public static void main(String[] args) {
        List l = new LinkedList();  //A
        for(int i=0; i<15; i++) {
            l.add("a" + i);
        }
        System.out.println(l);
        Collections.shuffle(l);
        System.out.println(l);
        Collections.reverse(l);
        System.out.println(l);
        Collections.sort(l); 
        System.out.println(l);
        System.out.println(Collections.binarySearch(l, "a2"));
        
    }
}

为什么A句写成List<Object> = new LinkedList<Object>();后就无法通过编译了?为什么?

回复列表 (共2个回复)

沙发

首先,不是
List<Object> = new LinkedList<Object>();
而是
List<Object> l = new LinkedList<Object>();
然后,还是不行:
因为Collections.sort();的参数是List<T>, 其中<T extends Comparable<? super T>>。Object不是Comparable,所以List<Object>不能用在Collections.sort();
同理,Collections.binarySearch()也只接收List<Comparable>.
Comparable是一个interface,包含重写int compareTo()和boolean equals()两个方法,具体自己查API。

板凳

l.add("a" + i);
你这里用l.add("a" + i);
放进去STRING,用
List<String> l = new LinkedList<String>();
就好了

我来回复

您尚未登录,请登录后再回复。点此登录或注册