java enumerator_Enumerator.java

package ChaiPiao;

import java.util.ArrayList;

import java.util.List;

public class Enumerator {

private List> enumerableList;

public Enumerator() {

this.enumerableList = new ArrayList<>();

}

/************************************

* methods

**********************************/

public void addEnumerable(Enumerable enumerable) {

this.enumerableList.add(enumerable);

}

public List> enumerate() {

List> result = new ArrayList<>();

List enumerationSet = new ArrayList<>();

for (int i = 0; i < enumerableList.size(); ++i) {

enumerationSet.add(enumerableList.get(i).enumeration());

}

result.add(enumerationSet);

boolean isOver = false;

while (true) {

enumerationSet = new ArrayList<>();

ENUM_TYPE enumeration = null;

for (int i = 0; i < enumerableList.size(); ++i) {

if (i == 0) {

enumeration = enumerableList.get(i).enumeration();

if (enumeration == null) {

enumerableList.get(i + 1).enumeration();

enumerableList.get(i).reset();

enumeration = enumerableList.get(i).enumeration();

}

enumerationSet.add(enumeration);

} else {

if (enumerableList.get(i).isEnumOver()) {

if (i == enumerableList.size() - 1) {

isOver = true;

} else {

enumerableList.get(i).reset();

enumeration = enumerableList.get(i).enumeration();

enumerationSet.add(enumeration);

enumerableList.get(i + 1).enumeration();

}

} else {

enumeration = enumerableList.get(i).getCurrent();

enumerationSet.add(enumeration);

}

}

}

if (!isOver) {

result.add(enumerationSet);

} else {

//枚举体重置。以免影响其他客户端引用的操作

enumerableList.forEach((game) -> {

game.reset();

});

break;

}

}

return result;

}

}

一键复制

编辑

Web IDE

原始数据

按行查看

历史

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值