迭代通用List java

时间:2013-04-14 10:58:45

标签: java

嗨,我被困在如何使用迭代器迭代通用列表。

例如,我有这样的事情:

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但是当我使用迭代器时它不显示列表但是它显示了内存位置(我猜)那份清单。我想让它逐一展示课堂上的所有领域。任何建议我应该做什么???

2 个答案:

答案 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());
}