我正在尝试按以下方式初始化HashSets数组,并抛出“找不到适用于add(Integer)的合适方法”,我尝试明确地添加pre [i] [0],该方法也不起作用。

另外,pre是int [] []类型,numCourses是int类型,pre [i] [j]是[0,numCourses-1]的元素。

Set<?>[] adj= new HashSet<?>[numCourses];
for(int i=0; i<numCourses; ++i) adj[i]=new HashSet<Integer>();
for(int i=0; i<numCourses; ++i){
    adj[pre[i][1]].add(new Integer(pre[i][0]));
}


有人可以帮我指出我可能做错了什么吗?
此外,使用通配符不是最佳实践,即设置声明,因为它失去类型检查功能,还有更好的方法吗?

最佳答案

为了回答代码中直接错误的问题,adj[pre[i][1]]具有类型HashSet<?>,即未知组件类型的HashSet。您不能将任何内容(null除外)添加到此类类型中,因为无法保证所添加的内容都是此未知类型的实例。

关于java - HashSet add(Object o)错误,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34114964/

10-10 13:55
查看更多