嗨,我被困在如何使用迭代器迭代通用列表。
例如,我有这样的事情:
public class a{
protected int _b;
protected String _c;
protected float _d;
protected int _e;
public a(int b, String c, float d, int e){
// assign value _b,_c,_d,_e
}
static class ab implement Iterable<a>{
public static List myList = new ArrayList(a);
public static void addlist(a f){
myList.add(f);
public Iterator<a> iterator(){
return myList.iterator()}// overriding List iterator method
然后在main方法中我通过创建类a的实例为_b,_c,_d,_e赋值并将其添加到myList但是当我使用迭代器时它不显示列表但是它显示了内存位置(我猜)那份清单。我想让它逐一展示课堂上的所有领域。任何建议我应该做什么???
答案 0 :(得分:2)
it doesnt show the list but it shows the memory location( i guess)of that list.
。
它显示了内存位置,因为您没有覆盖toString
方法,因此它会回退到默认的Object
实现。您需要覆盖toString
课程中的a
方法。
如果您添加以下内容:
public String toString()
{
return // Some string data.
}
到a
课程,您将开始看到正确的输出。
注意:Java命名约定规定所有类都应以大写字母开头,并且每个单词都有一个大写字母。即:a -> A
。
答案 1 :(得分:1)
覆盖班级toString()
中的a
方法。
@Override
public String toString() {
return "_b:"+_b+",_c:"+_c+"_d:"+_d+",_e:"+_e;
}
如果未覆盖toString()
,则您的班级a
会使用类Object
中继承的版本:
public String toString() {
return getClass().getName() + "@" + Integer.toHexString(hashCode());
}