java - 如何循环遍历 List<Pair>> 迭代器

标签 java loops iterator

我有一个方法可以循环遍历包含 <Key, <List<Pair>> 的 map 。 。我如何循环遍历并获得所有结果?由于此列表包含多种货币。我不希望将不同类型的货币金额加在一起。我的尝试如下,它似乎没有得到所有结果

最佳答案

假设您有一个包含所有数据的 map ,您可以执行以下操作:

Iterator<Entry<Date, List<Pair<BigDecimal, Currency>>>> itr = source.entrySet().iterator();

现在您已经有了这个迭代器,您可以将其转换为元素迭代器:

Iterator<Element> eItr = new Iterator<Element> {
    int index = 0;
    Iterator<Entry<Date, List<Pair<BigDecimal, Currency>>>> itr = source.entrySet().iterator();
    Entry<Date, List<Pair<BigDecimal, Currency>>> current = itr.hasNext()? itr.next() : null;

    @Override
    public boolean hasNext() {
        return current != null;
    }

    @Override
    public Element next() {
        try {
            return new Element(current.getKey(), current.getValue().get(index).getFirst(), current.getValue().get(index).getSeccond());
        } finally {
            index++;
            if (index >= current.getValue().size()) {
                index = 0;
                current = itr.hasNext()? itr.next() : null;
            }
        }
    }
}

关于java - 如何循环遍历 List<Pair>> 迭代器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57250614/

相关文章:

java - 推送通知不起作用 - Android

java - 为什么不能在 Java 中对所有语句都进行注释?

java - Java 中的循环和条件

algorithm - 具有因变量的嵌套循环

javascript - 如何遍历所有属性公司。例如[符号.迭代器]

java - 运行 Hbase Java API 时出错

java - JavaFX TableView不会在初始化方法之外更新

java - 如何在 Java 中执行 1 个命令 x 次

c++ - 新的 std::map::erase() 签名 C++17

iterator - 减少 Julia 中生成器的内存分配