Java中list的遍历问题

pingsuccess 2010-12-27 10:44:55
现在有一个需求就是,如题:

有一个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对象

急求,请各位帮帮忙,谢谢!

...全文
1761 31 打赏 收藏 转发到动态 举报
写回复
用AI写文章
31 条回复
切换为时间正序
请发表友善的回复…
发表回复
qingyuan18 2010-12-27
  • 打赏
  • 举报
回复
貌似没有什么难度啊
玉女 2010-12-27
  • 打赏
  • 举报
回复
楼上的应该改改


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

qybao 2010-12-27
  • 打赏
  • 举报
回复
不知道你的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);
}
}
chooseforget 2010-12-27
  • 打赏
  • 举报
回复
其实楼主在取出对象的时候就注定了后续程序的麻烦。

从数据库读取数据的时候直接把数据库值set到对象里,然后再add到集合里,这样就没有你说的这个问题了。
chooseforget 2010-12-27
  • 打赏
  • 举报
回复
9楼说的正确。
strObjList貌似是对象的每个属性值的数组存储形式。这样的话循环这个list,依次取出数组的值set到new出的student对象里,然后再把这个对象add到结果集合里。
pingsuccess 2010-12-27
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 oulinhnzz 的回复:]
Java code

import java.util.ArrayList;
import java.util.List;
public class Test1 {
public static void main(String []args){
//一个objList里面存储了10个list,每个list里面存储了10个obj
List obj……
[/Quote]


//获取的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,'深圳盐区']]
它又不是对象,该怎么转化。
zfz1214 2010-12-27
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 smmi 的回复:]
studentList.addAll((List)ObjList.get(0));
[/Quote]
正解
pingsuccess 2010-12-27
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 liudou327 的回复:]
// objStrList集合如下

如:[1,'张三','12','深圳南山区'],[2,'王五',23,'深圳福田区'],[3,'李四',24,'深圳宝安区'],[4,'毛六',36,'深圳盐区']



LZ不觉得此时的objStrList集合中 每一个值即:objStrList.get(i) 就是一个student 对象吗?
所以LZ只需要从
//这个ObjLis……
[/Quote]



取出的每一個相當于是一与是一个字符串,字符串怎么转化为对象
shaosijun2004 2010-12-27
  • 打赏
  • 举报
回复
你 new 个对象 ,split 一下 再set 一下 再add一下 不就完了……
pingsuccess 2010-12-27
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 nvrenshijianhuo 的回复:]
手写的..大概是这个意思?
List<Student> students = ObjList.get(0);
List<Student> studentList = new ArrayList<Student>();
Iterator<Student> it = students.iterator();
while(it.hasnext()){
Student stu = it.ne……
[/Quote]

这样不行的,因为你这样取出的每一个students如[1,'张三',12,'深圳南山区'],相当于是一个字符串,,它是不能转化为对象的。
蒙面客 2010-12-27
  • 打赏
  • 举报
回复
// 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集合 即可。


  • 打赏
  • 举报
回复

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

zn85600301 2010-12-27
  • 打赏
  • 举报
回复
说了半天还是很模糊
你是想每个将2层list的结构 变成一层list
取出来循环 放入一个新的list里面就行了 有什么问题?
smmi 2010-12-27
  • 打赏
  • 举报
回复
studentList.addAll((List)ObjList.get(0));
shaosijun2004 2010-12-27
  • 打赏
  • 举报
回复
……那取出来再add进去嘛
nvrenshijianhuo 2010-12-27
  • 打赏
  • 举报
回复
手写的..大概是这个意思?
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);
}
pingsuccess 2010-12-27
  • 打赏
  • 举报
回复
楼上的,谢谢大家了,现在已经解决了!非常感谢大家的意见。
pingsuccess 2010-12-27
  • 打赏
  • 举报
回复
[Quote=引用 27 楼 yousteely 的回复:]
Java code

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


问题解决
[/Quote]

这样是不行的
pingsuccess 2010-12-27
  • 打赏
  • 举报
回复
[Quote=引用 26 楼 wiloveryou123456789 的回复:]
引用 9 楼 shaosijun2004 的回复:

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


你的 student 没有 生成 setter getter 方法??? 。。。。。

你生成getter setter 之后。。不就可以了。。

List<Student> students = ObjList.get(0);
List……
[/Quote]


因为objList中存入的数组字符串,他能怎么转化为对象呢,我当然知道啊,这样的我早都想过了。
memoryshy 2010-12-27
  • 打赏
  • 举报
回复
[Quote=引用 26 楼 wiloveryou123456789 的回复:]

引用 9 楼 shaosijun2004 的回复:

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


你的 student 没有 生成 setter getter 方法??? 。。。。。

你生成getter setter 之后。。不就可以了。。

List<Student> students = ObjList.get(0);
L……
[/Quote]

我同意26楼楼主说的!
加载更多回复(9)

67,512

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧