我有節點的名單,我遍歷:Java的枚舉和循環問題
for (int i = 0; i < aNodes.getLength(); i++) {
//
}
例如,假設該列表包含12個項目,而且我知道3項表中的代表一行,接下來的3個屬於下一行。這意味着我的12個節點列表來源於包含4行的HTML表格。
每一行我想要做的事,例如,創建一個新的對象,並填充它......或任何之後。我有一個解決方案:
ArrayList<Account> mAccounts = new ArrayList<Account>();
Account account = new Account();
for (int i = 0; i < aNodes.getLength(); i++) {
String nodeValue = aNodes.item(i).getNodeValue();
boolean isNewRow = (i % COLS_PER_ROW == 0);
if (isNewRow) {
account = new Account();
mAccounts.add(account);
}
switch (i % COLS_PER_ROW) {
case ACCOUNT_POS:
account.setAccount(nodeValue);
break;
case BALANCE_POS:
account.setBalance(nodeValue);
break;
case DATE_POS:
account.setDate(nodeValue);
break;
}
}
但也有很多東西我不喜歡這樣的解決方案:
- 的帳戶實例,因爲創建的兩次第一次,一旦外循環,然後一旦新行被檢測到。
- 它使用整型常量ACCOUNT_POS = 0,BALANCE_POS = 1,DATE_POS = 2 ......這並不覺得很不錯,我想我應該用枚舉。
- 我不能在循環變量'i'中使用枚舉。
- 我不能使用for each循環,因爲節點沒有實現正確的接口,
任何人都可以表明,解決的事情,我不喜歡它的名單這樣做的更好的辦法?
謝謝。
事實上,你可以用做它以某種方式: '開關(SomeEnum。values()[i%COLS_PER_ROW])' – gastush