Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何循环浏览列表<;配对>&燃气轮机;迭代器_Java_Loops_Iterator - Fatal编程技术网

Java 如何循环浏览列表<;配对>&燃气轮机;迭代器

Java 如何循环浏览列表<;配对>&燃气轮机;迭代器,java,loops,iterator,Java,Loops,Iterator,我有一个方法,可以在包含的地图中循环,假设你有一个包含所有数据的地图,你可以这样做: Iterator<Entry<Date, List<Pair<BigDecimal, Currency>>>> itr = source.entrySet().iterator(); Iterator itr=source.entrySet().Iterator(); 现在您有了这个迭代器,可以将其转换为元素迭代器: Iterator<Element&g

我有一个方法,可以在包含
的地图中循环,假设你有一个包含所有数据的地图,你可以这样做:

Iterator<Entry<Date, List<Pair<BigDecimal, Currency>>>> itr = source.entrySet().iterator();
Iterator 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;
            }
        }
    }
}
Iterator eItr=新迭代器{
int指数=0;
迭代器itr=source.entrySet().Iterator();
条目当前=itr.hasNext()?itr.next():null;
@凌驾
公共布尔hasNext(){
返回电流!=null;
}
@凌驾
公共元素next(){
试一试{
返回新元素(current.getKey(),current.getValue().get(index).getFirst(),current.getValue().get(index).getsecond());
}最后{
索引++;
如果(索引>=current.getValue().size()){
指数=0;
当前=itr.hasNext()?itr.next():null;
}
}
}
}

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

Iterator<Entry<Date, List<Pair<BigDecimal, Currency>>>> itr = source.entrySet().iterator();
Iterator 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;
            }
        }
    }
}
Iterator eItr=新迭代器{
int指数=0;
迭代器itr=source.entrySet().Iterator();
条目当前=itr.hasNext()?itr.next():null;
@凌驾
公共布尔hasNext(){
返回电流!=null;
}
@凌驾
公共元素next(){
试一试{
返回新元素(current.getKey(),current.getValue().get(index).getFirst(),current.getValue().get(index).getsecond());
}最后{
索引++;
如果(索引>=current.getValue().size()){
指数=0;
当前=itr.hasNext()?itr.next():null;
}
}
}
}

您没有显示整个实现。。。您的下一个
在哪里?什么是
currentElement
?提示:如果(currentElement!=null)
某些输入和输出示例将是better@AndrewTobilko更新代码您没有显示整个实现。。。您的下一个
在哪里?什么是
currentElement
?提示:如果(currentElement!=null)
某些输入和输出示例将是better@AndrewTobilko更新codeDang,你的答案比我的更优雅:)我相信forEach是在Java8中添加的,我目前无法使用我将使用与早期版本兼容的版本编辑我的答案。仅几个问题,我在第一行映射的最后一部分遇到问题。entrySet(){它似乎不喜欢这样。其次,我将如何添加3个值(日期、BigDecimal和货币)到我的元素对象?map.entrySet()会出现什么错误。这是map接口上的一个方法,存在于Java 8之前。此外,创建元素对象将取决于元素类的结构。我已稍微编辑了循环体。(注意,在循环中,您可以访问变量“date”、“pair”、“bd”(bigDecimal)和“货币”。这些应该足以构造您的元素objectDang,您的答案比我的要优雅得多:)我相信forEach是在java 8中添加的,我目前无法使用。我将用一个与早期版本兼容的版本编辑我的答案。只有几个问题,我在第一行映射的最后一部分遇到了问题。entrySet(){它似乎不喜欢这样。其次,我将如何添加3个值(Date、BigDecimal和currency)到我的元素对象?map.entrySet()会出现什么错误。这是map接口上的一个方法,存在于Java 8之前。此外,创建元素对象将取决于元素类的结构。我已稍微编辑了循环体。(注意,在循环中,您可以访问变量“date”、“pair”、“bd”(bigDecimal)和“货币”。这些应该足以构造元素对象
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;
            }
        }
    }
}