Java的奇怪行为';s TreeMap put()方法
我有下面的代码,它将向量拆分为字符串向量(用作键)和结尾的整数(用作值)Java的奇怪行为';s TreeMap put()方法,java,collections,vector,treemap,Java,Collections,Vector,Treemap,我有下面的代码,它将向量拆分为字符串向量(用作键)和结尾的整数(用作值) payofs.put(新向量(keyAndOutput.subList(0,keyAndOutput.size()-1)),Integer.parseInt(keyAndOutput.lastElement()); 所讨论的树状图是使用比较器和以下方法构建的,该方法采用了词典学的、与大小写无关的顺序,也考虑了长度(较长的向量总是比较短的向量“大”) 公共整数比较(向量arg0、向量arg1){ int-sgn=0; 如果
payofs.put(新向量(keyAndOutput.subList(0,keyAndOutput.size()-1)),Integer.parseInt(keyAndOutput.lastElement());
所讨论的树状图是使用比较器和以下方法构建的,该方法采用了词典学的、与大小写无关的顺序,也考虑了长度(较长的向量总是比较短的向量“大”)
公共整数比较(向量arg0、向量arg1){
int-sgn=0;
如果(arg0.size()>arg1.size()){
返回1;
}else if(arg0.size()这是我的比较仪的问题吗?或者树映射是否在用put()做一些我不理解的事情?我不知道这是否是问题的原因,但是Java中的比较函数通常返回负或正或0,不一定是1或-1 我敢打赌,你会从CompareTignoreCase中得到一个非零值,但因为它不是1或-1,你会失败,并最终返回0,即使数组长度相同,内容也不相同。试着对照>0和回答而不是回答问题,除了代码之外,还有几点小问题:
编辑2:更正了开场白,以反映问题得到了实际回答。事实上,技巧可能确实是我误读了compareTo()文档中实际说的内容……一旦测试,将报告 啊,就是这样。谢谢大家
payoffs.put(new Vector<String>(keyAndOutput.subList(0, keyAndOutput.size() - 1)), Integer.parseInt(keyAndOutput.lastElement()));
public int compare(Vector<String> arg0, Vector<String> arg1) {
int sgn = 0;
if (arg0.size() > arg1.size()) {
return 1;
} else if (arg0.size() < arg1.size()) {
return -1;
}
for (int i = 0; i < arg0.size(); i++) {
if (arg0.elementAt(i).compareToIgnoreCase(arg1.elementAt(i)) == 1) {
sgn = 1;
break;
} else if (arg0.elementAt(i).compareToIgnoreCase(arg1.elementAt(i)) == -1) {
sgn = -1;
break;
} else {
continue;
}
}
return sgn;
}