我無法圍繞以下內容進行包裝,例如我有一個List,每個列表都包含'would be'for循環。每個繼承應該在另一個之內。動態'for-loop'結構
所以,如果我有3個對象的列表,我想
class Focus {
String focus;
List<String> values;
public Focus(String focus, String... values) {
this.focus = focus;
this.values = Lists.newArrayList(values);
}
}
List<Focus> focuses = new ArrayList<Focus>();
focuses.add(new Focus("Focus 1", "09", "14", "13", "12"));
focuses.add(new Focus("Focus 2", "94", "92"));
focuses.add(new Focus("Focus 3", "A", "B"));
String my_string = "";
for (Focus obj1 : list_obj_x) {
for (Focus obj2 : list_obj_xx) {
for (Focus obj3 : list_obj_xxx) {
my_string += obj1 + " " + obj2 + " " + obj3;
}
}
}
與列表中的環結構可以成長
明顯,且上面的是不可能的。 我需要一個動態結構來迎合my_string
的需求。即:
94 09 A
94 14 A
94 13 A
94 12 A
94 09 B
94 14 B
94 13 B
94 12 B
92 09 A
92 14 A
92 13 A
92 12 A
92 09 B
92 14 B
92 13 B
92 12 B
輸出應該像上面那樣。 這是我到目前爲止有:
int focusCount = focuses.size();
for (int i = (focusCount - 1); i >= 0; i--) {
Focus currentFocus = focuses.get(i);
List<String> currentFocusValues = currentFocus.values;
for (int cfv = 0; cfv < currentFocusValues.size(); cfv++) {
String currentFocusValue = currentFocusValues.get(cfv);
for (int j = (i - 1); j >= 0; j--) {
Focus previousFocus = focuses.get(j);
List<String> previousFocusValues = previousFocus.values;
for (int pfv = 0; pfv < previousFocusValues.size(); pfv++) {
String previousFocusValue = previousFocusValues.get(pfv);
System.out.println(currentFocusValue + " " + previousFocusValue);
}
}
}
}
它迎合了列表值, 的所有組合,但不是我想要的結構。
有人可以幫我嗎?
IMO你需要寫一個遞歸函數,去一個水平每個「焦點」陣列下來。 – 2012-02-03 13:09:48
或實現一個打印單個焦點對象(或overide toString())的方法,這樣您只能通過焦點對象進行迭代,每個焦點對象都會調用您的eg。用所有參數打印行的print()或toString()方法。 – Kris 2012-02-03 13:16:12
@epoch - 你不能使用StringBuffer而不是String來動態地填充迭代結果嗎?另外,在處理列表等集合時,使用'enhanced-for'循環來獲取集合的值可能會更好。 –
2012-02-03 13:18:15