2个类,一个Group和一个User,User持有Group的引用,User里有2个属性是username和age,现在问题是我压了一些东西进List,包括User类的对象,怎么一次性把List对象的值取出来,包括User对象,为什么我每次取出来都是内存地址喃。参考测试代码public static void main(String[] args) {
Group group = new Group();
group.setName("Test1");
User user = new User();
user.setUsername("ZhangSan");
user.setAge(20);
user.setGroup(group);
List list = new ArrayList();
list.add("aaaa");
list.add("bbbb");
list.add(user); Iterator it = list.iterator();
while(it.hasNext()){
System.out.println(it.next());
}
}

解决方案 »

  1.   

    另外用struts里的<bean:write />标签该怎么取喃?
      

  2.   

    你要实现User.toString() 方法.
      

  3.   

    顶楼上,另外还可以根据class来判断
    while(it.hasNext()){
      Object obj = it.next();
      if(obj instanceof User){
        ...
      }else if(obj instanceof Group){
        ...
      }else{
        ...
      }
    }   
      

  4.   

    it.next()取出来的是user对象的引用,你继续取里面的成员变量或者调用getter方法来输出,否则默认的toString方法就是直接给出引用的值,当然,像楼上说的那样自己重载toString方法也行。
      

  5.   

    Maybe this is a good solution:To write a class User includes a private list and rewrite method toString().
      

  6.   

    System.out.println(it.next());//这里要实现toString()方法,否则输出的的对象的地址
    获取信息通过get方法
      

  7.   

    <bean:write property="属性名"/>
    就是bean的属性名
      

  8.   


    class User{
    String name;
    public User(String name ){
    this.name = name;
    }
    public String getName() {
    return name;
    }
    public void setName(String name) {
    this.name = name;
    }

    public String toString(){
    return "name:"+name;
    }
    }
      

  9.   

    根据<bean:write />估计你是想把list里的数据显示在jsp上把。
    那么,为什么要把不一样的东西放在一个list里面,为显示制造麻烦?
    public class UserForm extends ActionForm {
        private String userName;    private String passWord;    private Group group;    // getter and setter
        public void setUserName(String userName){
            this.userName = userName;
        }
        public String getUserName() {
            return this.userName;
        }
        //.....其余自己写
    }public class Group {
        private String name;
        // getter and setter
    }jsp上面
    <bean:write name="struts-config.xml里配置的UserForm得名字" property="userName(属性名)"/>这样就可以取到userName
    <bean:write name="struts-config.xml里配置的UserForm得名字" property="group.name"/>取到group得name如果用List
    List list = new ArrayList();
    list.add(new User());
    那么取得的时候要
    User user = (User)list.get(0);// 第一个索引为0jdk1.5后,还有一个简便方法
    List<User> list = new ArrayList<User>();
    User user = list.get(0);
    用范型可以不用强制类型转换。但是你如果在List里面放入不同的类型,是不是在为自己找麻烦?
      

  10.   

    System.out.println(it.next());//这里要实现toString()方法,否则输出的的对象的地址
      

  11.   

    实现toString方法后可以
       for(String a:list){
           System.out.println(a);
    }
      

  12.   

    首先,感谢大家回答.我的意思是通过一次循环取出所有List的值List<User> list = new ArrayList<User>();
    User user = list.get(0);这种方法可以取出user对象的值,但取不出Group的对象值啊,我2个类的getters和setter是生成了的,我在User里重写了toString()方法后怎么还是输出的是对象地址喃?我饭后的就是对象的get()方法
      

  13.   

    <logic:iterator>
    <bean:write property="属性名"/>
    </logic:iterator>
    你查一下文档,差不多
      

  14.   

    恩确实集合的话只能用iterator来取。总结一下:集合本身里面存很多的对象,一个公共的循环必须类型是一样的。所以最放同样类型的来迭代,再次感谢大家。