【发布时间】:2019-02-28 03:44:03
【问题描述】:
我有一个对象,其中包含另一个对象的列表,其中包含另一个对象的列表等等...假设我想获取嵌套列表元素的计数(比如说最后一个),最好的方法应该是什么比我在下面的例子中使用传统的 for 循环 -
public static void main(String[] args) {
Statement statement = new Statement();
statement.getInvAccount().add(new InvestmentAccount());
statement.getInvAccount().get(0).getSecAccountStmt().add(new SecurityStatement());
statement.getInvAccount().get(0).getSecAccountStmt().get(0).getTransactionStatement().add(new TransactionStatement());
statement.getInvAccount().get(0).getSecAccountStmt().get(0).getTransactionStatement().add(new TransactionStatement());
statement.getInvAccount().get(0).getSecAccountStmt().get(0).getTransactionStatement().add(new TransactionStatement());
// method to count the number of TransactionStatement
System.out.println("Size of TransactionStatement is : " + count(statement));
}
private static int count(Statement stmt) {
int countOfTransStmt = 0;
for (InvestmentAccount invAcc : stmt.getInvAccount()) {
if (invAcc != null) {
for (SecurityStatement secStmt : invAcc.getSecAccountStmt()) {
if (secStmt != null) {
countOfTransStmt = countOfTransStmt + secStmt.getTransactionStatement().size();
}
}
}
}
return countOfTransStmt;
}
【问题讨论】:
-
我会选择一种使用队列的 BFS 方法。通过这种方式,您可以获取可能的对象,并且在循环内部,您可以轻松找到它是否属于嵌套类型。让我知道数据示例以在此处给出任何代码示例。
-
不妨看看访客模式。
-
@JohnKugelman 嵌套级别未知
-
@JohnKugelman 是的,如果嵌套级别更高,例如 6-7 怎么办?
-
@JohnKugelman OP 提到“我有一个对象,其中包含另一个对象的列表,其中包含另一个对象的列表,依此类推......”
标签: java for-loop arraylist java-7