我有这门课:
import java.util.Iterator;
import java.util.HashMap;
import java.util.Map;
public class Polynomial<T> implements Iterable<T> {
Map<Integer, Object> polynomial;
public Polynomial(){
polynomial = new HashMap<Integer, Object>();
}
public Polynomial(int numberOfMembers){
polynomial = new HashMap<Integer, Object>(numberOfMembers);
}
public void addElm(int power, int coefficient){
if (power < 0) {
power = Math.abs(power);
throw new RuntimeException("ERROR: The power must be an absolute number, converting to absolute");
}
for (Map.Entry m : polynomial.entrySet()) {
if ((Integer) m.getKey() == power){
polynomial.put(power,m.getValue());
}
}
}
@Override
public Iterator<T> iterator() {
// TODO Auto-generated method stub
return (Iterator<T>) new Object;
}
}
这是主要功能的一部分:
Polynomial<Integer> p1=new Polynomial<Integer>();
for (Integer r : p1)
System.out.println(r.toString());
正如你在上面看到的,我需要在 Polynomial 类上进行 foreach,这就是 Polynomial 实现 Iterable 接口(interface)的原因。但我的问题是我不知道如何实现 iterator() 方法。我怎样才能做到这一点?
最佳答案
你的代码非常困惑。 T
是什么?为什么类中没有使用T
? coefficient
参数的用途是什么?你想做什么?
我最好的猜测是,T
是多项式系数的类型,并且您正在尝试返回一个迭代系数的迭代器。
我像这样重写了你的代码:
public class Polynomial<T> implements Iterable<T> {
Map<Integer, T> polynomial;
public Polynomial(){
polynomial = new HashMap<Integer, T>();
}
public Polynomial(int numberOfMembers){
polynomial = new HashMap<Integer, T>(numberOfMembers);
}
public void addElm(int power, T coefficient){
if (power < 0) {
throw new RuntimeException("ERROR: The power must be an absolute number");
}
polynomial.put(power,coefficient);
}
@Override
public Iterator<T> iterator() {
return polynomial.values().iterator();
}
}
关于java - 如何使用 foreach 使类可迭代?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44863045/