2013-12-04 2 views
0

Добрый день Все,Как распечатать содержимое в коллекции в Java

нормально, я буду печатать все содержимое списка по смотреть list.size() и назначить его на объект и напечатать значение объекта. Ниже приведен мой пример кода:

List ccUserList = new ArrayList(); // Here I declare a List 
Collection ccGroupCol = new ArrayList(); // Here I declare a collection 

CCuserBO bo = null; 
ccUserList = getSummaryList(); 
for(int i = 0, i < ccUserList.size() , i++){ 
    bo = (CCUserBO) ccUserList.get(i); 
    System.out.println(bo.userName); 
} 

Я хотел бы спросить о способе печати материалов в коллекции. Так как у коллекции нет функции .get().

Ниже в коде, который я пытаюсь в коллекции:

CCuserBO newBo = null;  
    ccGroupCol = getSummaryList(); 
    Iterator iterator = ccGroupCol.iterator(); 
       while (iterator.hasNext()){ 
       newBo = iterator.next(); //error here, Type mismatch: cannot convert from Object to //Object[] 
        System.out.println("...."); 
       } 
+0

Почему вы не можете просто перебирать над «Сборником» с «Итератором»? Другими словами, используйте 'Iterator it = collection.iterator(); it.next() .... ' – cosjav

+0

Я пробовал, но не смог. Я отправлю свой код на Iterator. –

+0

Что такое тип объекта newBo. Plz публикует все связанные и соответствующие коды. –

ответ

0

Я нашел решение. Вот пример кода:

CCGroupBO newBo; 
     for(int i = 0 ; i < ccGroupCol.size() ; i++){ 
      newBo = (CCGroupBO) ccGroupCol.toArray()[i]; 
      System.out.println(newBo.getGroupName()); 
     } 

Спасибо за помощь.

+0

Не делайте этого! Вызовите .toArray() один раз и выполните итерацию по массиву. – Jan

+0

Привет, kurellajunior, Не так понимаю ваше утверждение. У U означает вызов .toArray() перед циклом for? –

+0

Привет, Панадол, да, что я имел в виду. Я добавлю ответ с кодом. – Jan

1

Если вы просто хотите напечатать все элементы коллекции непосредственно sysout Collection напрямую, она предоставит вам следующую форму в output: [element1, element2, ....], потому что метод toString() переопределяется и реализуется для обеспечения такой вывод для всех классов Collection.

С помощью итератора вы можете получить элемент по одному:

Iterator iterator = ccGroupCol.iterator(); 
      while (iterator.hasNext()){ 
     newBo = (**type cast here to particular newBo object type**)iterator.next(); 
       System.out.println(newBo);//here whatever you implemented in toString() method 
    // in newBo type class(if you did so), you will get that type of output, if you do not override 
//toString() to provide your implementation,you will get default implementation in 
//which it will show <the object class>@<its hash code> 
     } 

Примечание: тип возвращаемого iterator.next() является тип объекта, так что вы должны ввести брось, чтобы избежать несовместимого исключения типа. Или используйте Generics.

0

Вы можете использовать цикл for для итерации коллекции.

Collection collection= new ArrayList(); 
for (Object obj : collection) { 
//Here you can type cast the obj then you can print. 

} 
0

Как statet в комментарии, более быстрым решением для собственного ответа:

Collection<CCGroupBO> ccGroupCol = new ArrayList<CCGroupBO>() 
… 
CCGroupBO[] boArray = ccGroupCol.toArray(); 
for(CCGroupBO newBo : boArray){ 
    System.out.println(newBo.getGroupName()); 
} 

или даже более прямой:

Collection<CCGroupBO> ccGroupCol = new ArrayList<CCGroupBO>() 
… 
for(CCGroupBO newBo : ccGroupCol){ 
    System.out.println(newBo.getGroupName()); 
} 

в зависимости от других обстоятельств, есть даже лучше метод:

class CCGroupBO { 
    … 
    public String toString() { 
    return getGroupName(); 
    } 
} 
… 
Collection<CCGroupBO> ccGroupCol = new ArrayList<CCGroupBO>() 
… 
System.out.println(ccGroupCol); 
Смежные вопросы