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;
}
}
}
}