0

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

例如我有这样的事情:

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

然后在主要方法中,我通过创建类 a 的实例为 _b,_c,_d,_e 赋值并将其添加到 myList 但是当我使用迭代器时它不显示列表但它显示了该列表的内存位置(我猜) . 我希望它一个一个地显示 a 类中的所有字段。有什么建议我应该怎么做???

4

2 回答 2

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

于 2013-04-14T11:01:04.807 回答
1

覆盖toString()Class 中的方法a

 @Override
 public String toString() {
    return "_b:"+_b+",_c:"+_c+"_d:"+_d+",_e:"+_e;
 }

如果toString()没有被覆盖,那么您的 Classa使用从 Class 继承的Object

public String toString() {
    return getClass().getName() + "@" + Integer.toHexString(hashCode());
}
于 2013-04-14T11:04:42.257 回答