【发布时间】:2016-12-22 07:01:50
【问题描述】:
我有三个不同大小的数组来收集节点状态,我想用一个循环遍历所有这些数组,而不是为每个循环创建一个。我已经看到将数组命名为整数并执行 while/for 循环和递增的示例,但我想找到一种方法来保留当前数组名称。这是我到目前为止所拥有的。
编辑:我想将所有列表分开,以便轻松区分哪些节点具有哪些状态..即
在线 - node1, node2 |离线 - node3, node4 |未知 - 节点 5、节点 6
private String nodeStatus() {
List<Node> onlineNodes = new ArrayList<Node>();
List<Node> offlineNodes = new ArrayList<Node>();
List<Node> unknownNodes = new ArrayList<Node>();
for(Node n : getNodes()){
if (n.isRunning() == RunningType.ONLINE) {
onlineNodes.add(n);
}
if (n.isRunning() == RunningType.OFFLINE) {
offlineNodes.add(n);
}
if (n.isRunning() == RunningType.UNKNOWN) {
unknownNodes.add(n);
}
}
for (Node element : <online,offline,unknown>) {
System.out.println(element);
}
}
【问题讨论】:
-
您没有数组,而是由数组支持的列表。为什么不在迭代之前将它们连接在一起?这是一个相当便宜的手术。否则,您需要在迭代最大列表时对边界进行一些无用的逻辑检查。
-
为什么不保留第 4 个列表,即“全部”,并将每个节点添加到其中?
-
对不起 - 我应该更清楚...我想让它们分开.. Online、Offline 和 Unknown 都会在它们自己的列表中,因此很容易区分哪些节点有哪个状态。这里没有显示的是节点状态大约每30秒更新一次
-
@Jon 所以当你迭代列表时,你需要知道迭代中的当前元素来自哪里?
-
Node.isRunning()的返回类型是什么?
标签: java arrays loops arraylist