gpt4 book ai didi

Java 切换列表

转载 作者:行者123 更新时间:2023-12-01 14:21:40 24 4
gpt4 key购买 nike

我需要一个包含“启用”过滤器的列表,例如:

[
{
"enabled": false,
"value": {
"number": 0
}
},
{
"enabled": true,
"value": {
"number": 1
}
},
{
"enabled": false,
"value": {
"number": 2
}
},
{
"enabled": true,
"value": {
"number": 3
}
}
]

如果我要迭代此列表,使用 Iterable.iterator() 打印每个“数字”或带有 get(i) 的标准 for 循环,它会输出:

1, 3

它的 size() 将返回 2。但是如果我继续启用第一个元素,它将打印:

0, 1, 3

它的 size() 将返回 3。

有类似这样的标准实现吗?

该列表将具有对其未过滤版本进行操作的功能,以便能够实际切换每个元素。

最佳答案

我认为最简单的方法是自定义集合,它只需跳过元素到下一个启用元素

public interface Enabled
{
public boolean isEnabled();
}

public class EnabledCollection<T extends Enabled> implements List<T>
{
private List<T> list = new ArrayList<T>();

@Override
public Iterator<T> iterator() {
Iterator<T> it = new Iterator<T>() {

private int i = 0;

@Override
public boolean hasNext() {
return i < list.size();
}

@Override
public T next() {
T o = list.get(++i);

while (!o.isEnabled() && hasNext()) { o = list.get(++i); }

return o;
}

@Override
public void remove() {
// todo
}
};

return it;
}

@Override
public T get(int i)
{
T o = list.get(i);

while (!o.isEnabled() && i < list.size()) { o = list.get(++i); }

return o;
}

// etc
}

关于Java 切换列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17493782/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com