2013-04-14 4 views
0

Привет, я застрял в том, как перебирать общий список с помощью итератора.Итерация через общий список 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 

затем в главном методе я присвоить значение _b, _c, _d, _e путем создания экземпляров класса а и добавить его в MyList, но когда я использую iterator он не показывает список, но он показывает местоположение памяти (я думаю) этого списка. Я хочу, чтобы он показывал все поля в классе один за другим. любое предложение, что я должен делать ???

ответ

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()); 
} 
+0

Что делать, если я хочу использовать расширенный цикл for, чтобы прокрутить список, а затем использовать print для его отображения? –

+0

@TommyNgo Как это понимать? – christopher

+0

Пожалуйста, дайте мне знать, каким образом вы хотите печатать? 'System.out.println (instance of a)' всегда будет искать 'toString()' класса 'a', либо унаследованный, либо переопределенный. Поэтому вам нужно переопределить это, если вы хотите напрямую распечатать экземпляр 'a' осмысленно. – NINCOMPOOP

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.

Смежные вопросы