我有一個從字符串構建的多維數組,最初是用大小[50] [50]創建的,這個數組太大了,現在數組已滿了空值,我目前正在嘗試刪除這些空值,我已經設法將數組的大小調整爲[requiredSize] [50],但無法進一步縮小,任何人都可以幫助我嗎?我已經在互聯網上搜索了這樣一個答案,但找不到它。Java:調整多維數組的大小
這裏是我完整的代碼太(我知道有可能是在我的代碼一些非常不乾淨的部分,我還沒有清理任何東西)
import java.io.*;
import java.util.*;
public class FooBar
{
public static String[][] loadCSV()
{
FileInputStream inStream;
InputStreamReader inFile;
BufferedReader br;
String line;
int lineNum, tokNum, ii, jj;
String [][] CSV, TempArray, TempArray2;
lineNum = tokNum = ii = jj = 0;
TempArray = new String[50][50];
try
{
BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
System.out.println("Please enter the file path of the CSV");
String fileName = in.readLine();
inStream = new FileInputStream(fileName);
inFile = new InputStreamReader(inStream);
br = new BufferedReader(inFile);
StringTokenizer tok,tok2;
lineNum = 0;
line = br.readLine();
tokNum = 0;
tok = new StringTokenizer(line, ",");
while(tok.hasMoreTokens())
{
TempArray[tokNum][0] = tok.nextToken();
tokNum++;
}
tokNum = 0;
lineNum++;
while(line != null)
{
line = br.readLine();
if (line != null)
{
tokNum = 0;
tok2 = new StringTokenizer(line, ",");
while(tok2.hasMoreTokens())
{
TempArray[tokNum][lineNum] = tok2.nextToken();
tokNum++;
}
}
lineNum++;
}
}
catch(IOException e)
{
System.out.println("Error file may not be accessible, check the path and try again");
}
CSV = new String[tokNum][50];
for (ii=0; ii<tokNum-1 ;ii++)
{
System.arraycopy(TempArray[ii],0,CSV[ii],0,TempArray[ii].length);
}
return CSV;
}
public static void main (String args[])
{
String [][] CSV;
CSV = loadCSV();
System.out.println(Arrays.deepToString(CSV));
}
}
的CSV文件看起來如下
Height,Weight,Age,TER,Salary
163.9,46.8,37,72.6,53010.68
191.3,91.4,32,92.2,66068.51
166.5,51.1,27,77.6,42724.34
156.3,55.7,21,81.1,50531.91
它可以顯示任何大小,但這只是一個示例文件。
我只需要調整數組的大小,使它不會包含任何空值。
我也明白一個列表將是一個更好的選擇,但這是不可能的,由於外部約束。它只能是一個多維數組。
如果使用列表是不是一種選擇,你可以有你自己的動態數組實現,你的陣列擴大,因爲和需要和新建的數組中複製舊的值時。或者你可以讀兩次文件。首先找到行數和列數,然後在第二次讀取來定義數組,填入數組中的值 – 2010-10-18 18:24:43