现在有一个需求就是,如题: 有一个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,'张三','12','深圳南山区'],[2,'王五',23,'深圳福田区'],[3,'李四',24,'深圳宝安区'],[4,'毛六',36,'深圳盐区']] 如:List ObjList=dao.getPagetation(); // objStrList集合如下 如:[1,'张三','12','深圳南山区'],[2,'王五',23,'深圳福田区'],[3,'李四',24,'深圳宝安区'],[4,'毛六',36,'深圳盐区'] 現在就是想把在ObjList集合中把student的每一个对象取出来之后添加到studentList对象,而这个对象只包含每一个student对象
急求,请各位帮帮忙,谢谢!
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层list的结构 变成一层list
取出来循环 放入一个新的list里面就行了 有什么问题?
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));
}
}
}
}
所以LZ只需要从
//这个ObjList集合包含的值如:
[[1,'张三','12','深圳南山区'],[2,'王五',23,'深圳福田区'],[3,'李四',24,'深圳宝安区'],[4,'毛六',36,'深圳盐区']]取出objStrList集合 即可。
这样不行的,因为你这样取出的每一个students如[1,'张三',12,'深圳南山区'],相当于是一个字符串,,它是不能转化为对象的。
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,'深圳盐区']]
它又不是对象,该怎么转化。
strObjList貌似是对象的每个属性值的数组存储形式。这样的话循环这个list,依次取出数组的值set到new出的student对象里,然后再把这个对象add到结果集合里。
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);
}
}
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);
}
}
你的 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]
List<Student> studentList = new ArrayList<Student>();
for(List<Student> stu : ObjList){
students.addAll(stu);
}问题解决