有效扩展String数组

时间:2014-02-27 22:09:24

标签: java android arrays performance multidimensional-array

我正在尝试为string [] []数组创建一个小函数作为.push。

以下是我所拥有的简化版本。

String[][] myData = new String[43][12];
    //... fill myData array for a web service that would have returned the 12

现在我必须添加+1,因为我们知道数组是*不可变的,或者无法更改。 我想要的是基本上传递一个函数来扩展它并希望得到一些帮助

ArrayList<HashMap<String, String>> myData_temp = new ArrayList<HashMap<String, String>>();
HashMap<String, String> entry = new HashMap<String, String>();
    for(ii = 0; ii < 43; ii++){
        entry.put("_"+ii, "Maybe some random text...");
    }
alldata_setup.add(entry);

myData_AddEntry(alldata_setup);

....

public function myData_AddEntry(ArrayList<HashMap<String, String>> valueToAdd){
    //Create a Copy of myData
    String[][] myData_temp = myData;//Would this work? Is there a better way to duplicate?
    myData = new String[43][myData_temp[0].length + 1]
    //Then move old data into the array
    myData = myData_temp;
    //Then add newest entry
    for(ii = 0; ii < 43; ii++){
        myData[ii][myData[0].length] = valueToAdd.get("_"+ii);
    }
}

我知道这可能非常粗糙/粗糙。但是,我希望使用像myData [] []这样的数组,因为当我进入android Java,PHP,AS3之间时,这将使我的生活更轻松,其他2已经很容易使用这种格式,我想尽我所能为了我的利益而保持一致。

理想情况下,我希望完成两件事。

1 - 重新初始化我的全局myData数组,同时保留所有旧数据

2 - 在现在打开的插槽中添加新值的myData数组。

非常感谢任何帮助。我真的必须继续使用String [] []方法来帮助自己,而不是深入研究arrayList,lists,hashmaps,sparseArrays,HashMap&gt; ..我继承了一个热点,需要开始清理任何东西到合理。我知道这样做的最好方法是回到已知的并且能够在所有其他项目之间绘制相似之处并将其应用于此,以便在所有项目之间进行切换时,所有3个人都不会有太多问题。它们。

2 个答案:

答案 0 :(得分:0)

你正在思考它只是让第二个String [] []将数据复制到其中,然后将新数组保存到变量中。

答案 1 :(得分:0)

你可以简单地这样做

    ... 

    String[][] newData = new String[43][];
    for(int i=0; i<data.length; i++) {
        String[] row = data[i];
        newData[i] = Arrays.copyOf(row, row.length + 1);
    }

    // fill in new data column in newData