问题描述
我正在 Java 中使用 TreeMap 进行练习,但遇到了必须使用 TreeMap 构造函数的情况,我找不到任何方法来处理它,我正在这里编写程序的一部分,任何人都可以帮助我用这个? 这个函数应该返回什么,我该如何处理
错误:java.util.TreeMap
public TreeMap<?,?> createMatchesMap(String cricketDataset)
{
TreeMap<String,Double> tm = new TreeMap<String,Double>();
String[] str = cricketDataset.split("\\|");
for(int i=0;i<str.length;i++) {
String[] str1 = str[i].split(",");
Double c = 0.0;
int c1=0;
if(str1[0].equals("1")) {
for(int j=0;j<str.length;j++) {
String[] str2 = str[j].split(",");
if(str2[1].equals(str1[1]) && str2[0].equals("1")) {
Double score = Double.parseDouble(str2[2]);
c=c+score;
c1+=1;
}
}
tm.put(str1[1],c/c1);
}
}
return tm;
}
解决方法
这与协方差和逆变有关(参见 https://en.wikipedia.org/wiki/Covariance_and_contravariance_(computer_science))。简而言之,如果你能做到这一点:
List<String> ls = new ArrayList<>();
List<Object> lo = ls;
然后您可以在下一步中执行此操作
lo.add(new Double(1.3));
这会在我们的字符串列表中添加一个 Double(因为 lo 指的是与 ls 相同的对象)