0

クラスがあります

public class SimpleData() {
    String continent;
    String country;
    String city;

    public SimpleData(String continent, String country, String city) {
        this.continent = continent;
        this.country = country;
        this.city = city;
    }

}

そして、ファイルからデータを取得して2Dオブジェクト配列を返す別のクラス

private Object[][] getDataFromFile(String fileName) {
    return dataLoader.getTableArray(fileLocation, dataSheetName);
}

//will return something like
europe, uk, london
europe, france, paris

SimpleDataの各オブジェクトがデータの行を表すように、2d配列をループしてオブジェクトをリストに追加するときに、SimpleDataのオブジェクトを作成するにはどうすればよいですか?

private List<SimpleData> getDataList() {
    Object[][] array = readDataFromFile("myfile");
    List<SimpleData> dataList = new ArrayList<SimpleData>();

    for (int i = 0; i < arr.length; i++) {
        for (int j = 0; j < arr[i].length; j++) {
            //what's the code to generate object with the correct row of data?
        }
    }
    return dataList;
}
4

3 に答える 3

2

それ以外の

    for (int j = 0; j < arr[i].length; j++) {
        //what's the code to generate object with the correct row of data?
    }

これが必要になります(例外処理を無視します):

dataList.add(new SimpleData(array[i][0].toString(), array[i][1].toString(), 
   array[i][2].toString()));
于 2012-06-06T21:03:32.113 に答える
0

ループでは、forループする代わりにj、コンストラクターを呼び出します。

for (int i = 0; i < arr.length; i++) {
    SimpleData yourData = new SimpleData(arr[i][0].toString(), arr[i][1].toString(), arr[i][2].toString());
    // Whatever you want with yourData.
}

SimpleDatasのArrayListを作成することもできます。次に例を示します。

ArrayList<SimpleData> datas = new ArrayList<SimpleData>();
for (int i = 0; i < arr.length; i++) {
    datas.add(new SimpleData(arr[i][0].toString(), arr[i][1].toString(), arr[i][2].toString()));
}
// Whatever you want with datas.

編集:toString各SimpleDataコンストラクターに追加するように更新されました。これはvizierの解決策だったので、彼の答えに賛成/同意してください。

于 2012-06-06T21:03:30.510 に答える
0

2D配列には正確に3つの列が含まれていますか?もしそうなら、ここにコードがあります。

 private List<SimpleData> getDataList() {
    Object[][] array = readDataFromFile("myfile");
    List<SimpleData> dataList = new ArrayList<SimpleData>();

    for (int i = 0; i < arr.length; i++) {
        SimpleData sd = new SimpleData(array[i][0], array[i][1], array[i][2]);
        dataList.add(sd);
        }
    }
    return dataList;
}
于 2012-06-06T21:07:32.643 に答える