我正在开发一个用Java编写的项目,它要求我构建一个非常大的2-D稀疏数组.非常稀疏,如果这有所不同.无论如何:这个应用程序最关键的方面是时间上的效率(假设内存负载,虽然不能无限制地允许我使用标准的2-D阵列 - 关键范围是两个维度的数十亿).
在阵列中的kajillion细胞中,将有数十万个细胞包含一个物体.我需要能够很快地修改单元格内容.
无论如何:有没有人为此目的知道一个特别好的图书馆?它必须是伯克利,LGPL或类似的许可证(没有GPL,因为该产品不能完全开源).或者,如果只有一种非常简单的方法来制作自制的稀疏数组对象,那也没关系.
我正在考虑MTJ,但没有听到任何关于其质量的意见.
什么是我可以访问的阵列的长度,集合(的不同的方式List,Set等),和一个String对象?它为什么不同?
在for基本的2D String数组的嵌套循环中,我遇到了这个:
array = new String [5][10];
for(int i=0; i<array.length;i++)
{
for(int j=0; j<array[0].length;j++)
{
System.out.print(array[i][j]="*");
}
System.out.println("");
}
Run Code Online (Sandbox Code Playgroud)
现在这就是我想知道的,为什么第二个for陈述包括array[0].length而不是在它之前array.length的for陈述中?
我可以在实验过程中从中提取所有内容,如果两个for语句都包含array.length且2D数组是5x10,它会将其打印为5x5,但使用array[0].length它会打印正确的5x10.
那么为什么这个小调整会解决所有问题?
我想从文件中读取数字行.代码如下,但IDE显示NullPointerException运行时异常.不确定我做错了什么.
//reading the contents of the file into an array
public static void readAndStoreNumbers() {
//initialising the new object
arr = new int[15][];
try{
//create file reader
File f = new File("E:\\Eclipse Projects\\triangle.txt");
BufferedReader br = new BufferedReader(new FileReader(f));
//read from file
String nums;
int index = 0;
while((nums = br.readLine()) != null) {
String[] numbers = nums.split(" ");
//store the numbers into 'arr' after converting into integers
for(int i=0; i<arr[index].length; i++) {
arr[index][i] = Integer.parseInt(numbers[i]);
}
index++;
}
} …Run Code Online (Sandbox Code Playgroud)