gpt4 book ai didi

java - 使类(包装 Map)可在 Java 的 for 循环中使用

转载 作者:行者123 更新时间:2023-12-01 19:58:22 24 4
gpt4 key购买 nike

我有一个类,它基本上是 Map 的包装器(显然也包含一些业务逻辑)。我希望能够做到的是:

for(Object o: instanceOfMyClass) { ... }

所以我想循环遍历类中 Map 的值。我需要在我的类中实现哪些接口(interface)(Iterator、Iterable,...)?我想在要实现的接口(interface)中我需要以某种方式返回一个 Interator;如何“重用”Map 的迭代器(通过 Map.entrySet())记住我只想在类的迭代器中公开值?

非常感谢!

最佳答案

就像实现 Iterable 一样简单。在您的情况下,您想要实现 Iterable<SomeType> :

public class Main implements Iterable<String>
{
private final Map<String, String> myMap = new HashMap<>();
{
myMap.put("hello", "world");
myMap.put("aaa", "bbb");
}

@Override
public Iterator<String> iterator()
{
return Collections.unmodifiableMap(myMap).values().iterator();
}
}

这是一个测试方法,输出如下:

public static void main(String... args)
{
for (String entry : new Main())
{
System.out.println("Value: " + entry);
}
}

Value: bbb
Value: world

关于java - 使类(包装 Map)可在 Java 的 for 循环中使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48703476/

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