【发布时间】:2014-07-30 19:59:29
【问题描述】:
我有以下代码:
for (int i = 0; i < costs.size(); i++){
System.out.println(twoDArrayList);
for (int j = 0; j < cities.size(); j++){
if (i==0 || i%cities.size() != 0){
twoDArrayList.get(j).add(costs.get(i));
}
}
}
它应该拆分一个 ArrayList(成本)并将值放入一个 2D ArrayList(twoDArrayList)。这几乎可以工作,只是代码只是将相同的值放入 twoDArrayList 中的每个 ArrayList。这是输出:
begin execution
[Seattle, NewOrleans, LosAngeles, Tucson, Chicago, Miami, Omaha]
[[], [], [], [], [], [], []]
[[0], [0], [0], [0], [0], [0], [0]]
[[0, 2706], [0, 2706], [0, 2706], [0, 2706], [0, 2706], [0, 2706], [0, 2706]]
[[0, 2706, 1136], [0, 2706, 1136], [0, 2706, 1136], [0, 2706, 1136], [0, 2706, 1136], [0, 2706, 1136], [0, 2706, 1136]]
...etc.
我需要它移动,以便 arrayList 是:
[0][2706][1136][etc...]
谢谢!
这里是完整的代码:
private static ArrayList<String> cities;
private static ArrayList<Integer> costs;
private static ArrayList<ArrayList<Integer>> twoDArrayList;
public TSP(Scanner inFile) {
cities = new ArrayList<String>();
costs = new ArrayList<Integer>();
String newCities;
newCities = (inFile.nextLine());
String[] stringArray = newCities.split(" ");
for (int i = 0; i < stringArray.length; i++){
cities.add(stringArray[i]);
}
System.out.println(cities);
twoDArrayList = new ArrayList<ArrayList<Integer>>();
for (int i = 0; i < cities.size(); i++){
twoDArrayList.add(new ArrayList<Integer>());
}
while (inFile.hasNextInt()){
int newCost = inFile.nextInt();
costs.add(newCost);
}
for (int i = 0; i < costs.size(); i++){
System.out.println(twoDArrayList);
for (int j = 0; j < cities.size(); j++){
if (i==0 || i%cities.size() != 0){
twoDArrayList.get(j).add(costs.get(i));
}
}
}
System.out.println(twoDArrayList.get(0).get(0));
System.out.println(twoDArrayList.get(0).get(1));
System.out.println(twoDArrayList.get(0).get(2));
System.out.println(twoDArrayList.get(2).get(0));
System.out.println(twoDArrayList.get(2).get(1));
System.out.println(twoDArrayList.get(2).get(2));
}
}
【问题讨论】:
-
我不太了解初始数组列表中的内容以及二维数组列表中应该包含的内容,知道类型(列表的初始化)也会很好。
-
我编辑了原始问题。
-
请显示以下内容:原始arraylist内容;预期的输出。