if (value.compareTo(elementData[size]) >= 0) {
elementData[size + 1] = value;
size++;
} else if (value.compareTo(elementData[0]) <= 0) {
for (int i = size; i >= 0; i--) {
elementData[i + 1]= elementData[i];
}
elementData[0] = value;
size++;
}
第一个if语句应从compareTo返回正数。我已经调试并确认它确实返回正数,但是它没有进入代码块。
我正在比较喜欢这些“ str1”,“ str2” ...等的字符串。在到达“ str10”并将其与“ str9”进行比较之前,它可以正常工作。有人说“ str10”小于“ str9”,这有意义吗?
它每10次迭代发生一次。所以我的数组看起来像[str0,str1,str10 ... str19,str2,str20,str21,... str29..etc]
最佳答案
考虑使用compareTo(String anotherString)时如何比较string
值。
按字典顺序比较两个字符串。比较是基于
字符串中每个字符的Unicode值。字符序列
将此字典对象表示的内容按字典顺序与
参数字符串表示的字符序列。结果是
如果此String对象在字典上位于之前,则为负整数
参数字符串。如果此String,则结果为正整数
对象在字典上跟随自变量字符串。结果是
如果字符串相等,则为零;否则为零。当
equals(Object)方法将返回true。
如您所见,将"str10"
与"str9"
比较时,'1'
中"str10"
的Unicode值小于'9'
中"str9"
的Unicode值,这就是为什么结果"str10"
不大于"str9"
。
您可以考虑选择Alphanum算法。