每当我尝试从具有长数据类型索引的数组访问元素时,我都无法这样做。
我需要获取在某个索引处出现的字符才能与另一个字符进行比较。
我尝试使用Array类的getChar()
,并尝试使用索引获取字符。以下是我尝试过的代码段。
试验1
for (long i = 0; i < len; i++) {
c = Array.getChar(newArray, i);
if (c != 'a') {
} else {
ctr++;
}
}
审判2
for (long i = 0; i < len; i++) {
c = newArray[(int) i];
if (c != 'a') {
} else {
ctr++;
}
}
预期-我应该获取要查找的索引的字符。
错误-可能会失去精度。
答案 0 :(得分:0)
java中数组的最大大小为Integer.MAX_VALUE-2(在Java 8 Open JDK中):
//不编译
Object oArray[] = new Object[Long.MAX_VALUE];
//线程“主”中的异常java.lang.OutOfMemoryError:请求的数组大小超出了VM限制
Object oArray[] = new Object[Integer.MAX_VALUE];
//线程“主”中的异常java.lang.OutOfMemoryError:请求的数组大小超出了VM限制
Object oArray[] = new Object[Integer.MAX_VALUE - 1];
//没关系
Object oArray[] = new Object[Integer.MAX_VALUE - 2];
然后,不适合使用长索引类型,因为无法在最大值-2之后获得索引位置。
如果要创建大小大于整数限制的字符的“内存中”存储,则可以创建Map的实例:
Map<Long, Character> map = new HashMap();
答案 1 :(得分:0)
因为您的数组永远不能比toggleIcon = isMouseOver => this.setState({ isMouseOver });
...
onMouseEnter={() => this.toggleIcon(true)}
onMouseExit={() => this.toggleIcon(false)}
大,所以通过整数(而不是长整数)访问它就足够了。
Integer.MAX_VALUE-2