日期:2014-05-20  浏览次数:21107 次

java数组的大小超出了int的表示范围怎么办?
大家好,现在遇到了一个实际问题。一般情况下定义一个数组可以写成

int size = 7;
booean[] visited = new boolean[size];

但现在的问题是需要的数组很大,超出了int的表示范围,第一感觉是换成 long,即

long size = 7;
booean[] visited = new boolean[size];

但这样就直接报错了,提示不能把long转化为int.
还有,像List,ArrayList中获取第i元素的get(i)函数中的i都是int型,但都会涉及到长度大于int的最大值问题,大家遇到这个问题是怎么解决的?
先谢谢大家了。
java?数组?超出?整型?最大长度?

------解决方案--------------------
要是真到了这么大长度,楼主就要考虑放弃数组了
比如你这里的boolean类型,用数组太浪费了,一个int有32位你用它的31位来表示boolean就行啊,位运算嘛。
------解决方案--------------------
引用:
引用:引用:
引用:牛X 一个数组都能超过int32,这可是21亿啊。
是数据挖掘上的一个算法遇到的,现在数据集中只有80000条记录,但要求任意两记录的相似度,并且还要临时保存这些相似度。任意两记录的相似度可以用一个矩阵表示(二维数组),但……


你转化成一维数组将会对你的数据的查找带来很大的麻烦,这势必会对你这样大数据量的处理带来性能上的很大影响并且刚刚想了下,你的这些临时数据如果都是boolean值的话, 就算按照你转化成一位数组的话,将要花费掉将近400M的存储空间,这么大的数据是要驻留内存吗,如果是的话, 看你们的条件允许不?不允许的话那你们应该考虑一下算法的东西吧, 如果是要放到硬盘里面去,估计软件的性能会让你绝望