如何在Java中打印Collection中的内容

时间:2013-12-04 03:41:48

标签: java list collections struts

美好的一天,

通常,我会通过查看list.size()打印List中的所有内容并将其分配给对象并打印对象值。以下是我的示例代码:

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);
}

我想问一下在Collection中打印内容的方法。 由于Collection没有.get()函数。

我在Collection中尝试的代码中的以下内容:

    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("....");
                }

4 个答案:

答案 0 :(得分:1)

如果你只是想直接打印一个Collection的所有元素,它将在输出中提供以下表单:[element1,element2,....]因为toString()方法被覆盖并实现以提供这样的所有Collection类的输出。

通过使用Iterator,您可以逐个获取元素:

    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()的返回类型是Object类型,因此必须键入cast类型以避免不兼容的类型异常。或者使用Generics。

答案 1 :(得分:0)

我找到了解决方案。以下是示例代码:

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

感谢您的帮助。

答案 2 :(得分:0)

您可以使用for循环来迭代集合。

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

}

答案 3 :(得分:0)

作为评论中的状态,为您自己的答案提供更快的解决方案:

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);