现在有一个需求就是,如题:           有一个list集合(如:ObjList),这个ObjList集合中还包含一个list集合(如:objStrList),而这个objStrList集合中包含的是每一個student对象,我现在就是想把这个objStrList集合中的每一个对象取出来重新添加到一个studentList集合中,而这个studentList集合中,只包含student的每一个对象。   student对象:stuId,stuName,stuAge,stuAddress    //这个ObjList集合包含的值如:
[[1,'张三','12','深圳南山区'],[2,'王五',23,'深圳福田区'],[3,'李四',24,'深圳宝安区'],[4,'毛六',36,'深圳盐区']]    如:List ObjList=dao.getPagetation();      // objStrList集合如下  如:[1,'张三','12','深圳南山区'],[2,'王五',23,'深圳福田区'],[3,'李四',24,'深圳宝安区'],[4,'毛六',36,'深圳盐区']   現在就是想把在ObjList集合中把student的每一个对象取出来之后添加到studentList对象,而这个对象只包含每一个student对象
      
  急求,请各位帮帮忙,谢谢!
   
   

解决方案 »

  1.   

    手写的..大概是这个意思?
    List<Student> students = ObjList.get(0);
    List<Student> studentList = new ArrayList<Student>();
    Iterator<Student> it = students.iterator();
    while(it.hasnext()){
      Student stu = it.next();
      studentList.add(stu);
    }
      

  2.   

    studentList.addAll((List)ObjList.get(0));
      

  3.   

    说了半天还是很模糊
    你是想每个将2层list的结构 变成一层list
    取出来循环 放入一个新的list里面就行了 有什么问题?
      

  4.   


    import java.util.ArrayList;
    import java.util.List;
    public class Test1 {
    public static void main(String []args){
    //一个objList里面存储了10个list,每个list里面存储了10个obj
    List objList =new ArrayList();
    for(int i=0;i<10;i++){
    List list=new ArrayList();
    for(int j=0;j<10;j++){
    Object obj =new Object();
    list.add(obj);
    }
    objList.add(list);
    }
    //把objList中的list一个个拿出来,然后把list中的obj一个个拿出来存到新的stuList里面
    List stuList =new ArrayList();
    for(int i=0;i<objList.size();i++){
    List list=new ArrayList();
    list=(List)objList.get(i);
    for(int j=0;j<list.size();j++){
    stuList.add(list.get(j));
    }
    }
    }
    }
      

  5.   

     // objStrList集合如下  如:[1,'张三','12','深圳南山区'],[2,'王五',23,'深圳福田区'],[3,'李四',24,'深圳宝安区'],[4,'毛六',36,'深圳盐区']LZ不觉得此时的objStrList集合中 每一个值即:objStrList.get(i) 就是一个student 对象吗?
     所以LZ只需要从 
     //这个ObjList集合包含的值如:
    [[1,'张三','12','深圳南山区'],[2,'王五',23,'深圳福田区'],[3,'李四',24,'深圳宝安区'],[4,'毛六',36,'深圳盐区']]取出objStrList集合 即可。
      

  6.   


      这样不行的,因为你这样取出的每一个students如[1,'张三',12,'深圳南山区'],相当于是一个字符串,,它是不能转化为对象的。
       
      

  7.   

    你 new 个对象 ,split 一下 再set 一下 再add一下  不就完了……
      

  8.   

           //获取的objList是这样返回的
            public List getResultBySql(String sql,String [] title)
    {
    try
    {
    stmt = this.con.createStatement();
    rs = stmt.executeQuery(sql);
    List result=new ArrayList();
    while(rs.next())
    {
    List rowList=new ArrayList();
    for(int i=1;i<=colNum;i++)
    {
    rowList.add(rs.getString(i));
    }
    result.add(rowList);

    }
    return result;
    }
    catch(SQLException es)
    {
    es.printStackTrace();
    return null;
    }
    finally
    {
    try {
    rs.close();
    stmt.close();

    catch (SQLException e) 
    {
    System.out.println("资源回收失败!");
    e.printStackTrace();

    }

    }
    }
    //所以它添加进去的相当于一个数组的字符串,如上面所说类型:
    //这个ObjList集合包含的值如:
    [[1,'张三','12','深圳南山区'],[2,'王五',23,'深圳福田区'],[3,'李四',24,'深圳宝安区'],[4,'毛六',36,'深圳盐区']]
    它又不是对象,该怎么转化。
      

  9.   

    9楼说的正确。
    strObjList貌似是对象的每个属性值的数组存储形式。这样的话循环这个list,依次取出数组的值set到new出的student对象里,然后再把这个对象add到结果集合里。
      

  10.   

    其实楼主在取出对象的时候就注定了后续程序的麻烦。从数据库读取数据的时候直接把数据库值set到对象里,然后再add到集合里,这样就没有你说的这个问题了。
      

  11.   

    不知道你的List里放的是什么类型,自己按照需要的类型改把List<Student> studentList = new ArrayList<Student>();
    for (your_type1 obj: objList) { //your_type1 可能是List<List<Object>>吧,自己改
        for (your_type2 list : objStrList) { //your_type2 可能是List<Object>吧,自己改
            Student s = new Student();
            s.stuId = (Integer)s.get(0); //如果Student有get/set方法,调用相应的set方法
            s.stuName = (String)s.get(1);
            s.stuAge = (String)s.get(2);
            s.stuAddress = (String)s.get(3);
            studentList.add(s);
        }
    }
      

  12.   

    楼上的应该改改List<Student> studentList = new ArrayList<Student>();
    for (your_type1 obj: objList) { //your_type1 可能是List<List<Object>>吧,自己改
        for (your_type2 list : objStrList) { //your_type2 可能是List<Object>吧,自己改
            Student s = new Student();
            s.stuId = (Integer)list .get(0); //如果Student有get/set方法,调用相应的set方法
            s.stuName = (String)list .get(1);
            s.stuAge = (String)list .get(2);
            s.stuAddress = (String)list .get(3);
            studentList.add(s);
        }
    }
      

  13.   


    你的 student  没有 生成 setter getter 方法??? 。。你生成getter setter 之后。。不就可以了。。List<Student> students = ObjList.get(0);
    List<Student> studentList = new ArrayList<Student>();
    Iterator<Student> it = students.iterator();
    while(it.hasnext()){
      Student stu = it.next();
    [color=#008000]当你 student 这个class 中 有了setter getter 方法之后。。你就可以随便 。。往list 中 添加  student 了面向对象。明白否??

      studentList.add(stu);
    }[/color]
      

  14.   


    List<Student> studentList = new ArrayList<Student>();
    for(List<Student> stu : ObjList){
        students.addAll(stu);
    }问题解决
      

  15.   

    因为objList中存入的数组字符串,他能怎么转化为对象呢,我当然知道啊,这样的我早都想过了。