我有一个创建TreeMap
的代码并填充它然后尝试按其中可用的整数值对其进行排序。但它给了我一条红线TreeMap
[显示编译器错误“对TreeMap的引用含糊不清”]我不知道为什么。以下是我的代码:
package treemap;
import java.util.*;
import java.util.HashSet;
import java.util.TreeMap;
import java.util.Set;
import java.util.Iterator;
import java.util.Map;
public class TreeMap {
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
try {
TreeMap<Integer, String> hm = new TreeMap<Integer, String>();
hm.put(100, "Amit");
hm.put(102, "Ravi");
hm.put(101, "Vijay");
hm.put(103, "Rahul");
for (Map.Entry m : hm.entrySet()) {
System.out.println(m.getKey() + " " + m.getValue());
}
} catch (Exception e) {
System.out.println(e);
}
}
}
你能帮助我吗?
答案 0 :(得分:0)
问题是由于您的代码引用了两个不同的类(您自己的TreeMap
类,而JDK集合类TreeMap
)具有相同的句柄,#34; TreeMap&#34;,并且编译器无法知道哪个是哪个。解决问题的最简单,也可能是最优雅的方法是重命名您的类,使其名称不再与其中引用的任何其他类相同。正如其他人所建议的那样,将您的课程重命名为TreeMapTest
将解决您的问题。
但请注意,虽然重命名您的课程可能是最佳解决方案,但为您的课程提供与其他课程相同的名称是完全合法的。但是当你引用另一个类时,你需要使用一个完全限定的名字,这样编译器就知道你何时引用你自己的类,以及当你引用同名的另一个类时
因此修复代码的另一种方法是用{\}更换main
方法的第一行:
java.util.TreeMap<Integer, String> hm = new java.util.TreeMap<>();
因为您正在使用JDK TreeMap
集合类的完全限定名称(包名称,类名称),编译器知道您指的是那个,而不是您自己的TreeMap
课程。 (如果你指的是这样的另一个类,你必须摆脱import java.util.TreeMap
行,因为它不再需要。)