大家好,我的问题是这样的:
现在有一个courseList保存着多个course对象
List<CourseVo> courseList = new ArrayList<CourseVo>();
CourseVo c1 = new CourseVo();
c1.setCourse_name("c1");
CourseVo c2 = new CourseVo();
c2.setCourse_name("c2");
CourseVo c3 = new CourseVo();
c3.setCourse_name("c3");
CourseVo c4 = new CourseVo();
c4.setCourse_name("c4");
courseList.add(c1);
courseList.add(c2);
courseList.add(c3);
courseList.add(c4);
需要把courseList拆分成多个list,然后保存到lists中
List<List> lists = new ArrayList<List>();
List<CourseVo> list = new ArrayList<CourseVo>();开始做循环
CourseVo c = null;
int index =0;
for(int i=0;i<courseList.size();i++)
{
c = courseList.get(i);
list.add(c);
if((i+1)%2 != 0)
{
continue;
}
lists.add(index, list);
问题就在这里:
我已经将list添加到lists中了,可以当我clear()后,想取存放进lists中的list就取不到了???
list.clear();
List l = lists.get(index);
for(int k=0;k<l.size();k++)//这里size()=0,取不到保存进去的list
{
CourseVo course = (CourseVo)l.get(k);
System.out.println(course.getCourse_name());
}
index++;
}说明:因为每次循环的将对象保存到list中,然后再将list保存到lists中,完成之后需要将list清空,然后再保存新的对象,再依次 重复。不知道是不是clear()这个方法将add(index,list)里面的list都清空?如果是这样,那有什么方法能解决我上面的问题。谢谢了!
现在有一个courseList保存着多个course对象
List<CourseVo> courseList = new ArrayList<CourseVo>();
CourseVo c1 = new CourseVo();
c1.setCourse_name("c1");
CourseVo c2 = new CourseVo();
c2.setCourse_name("c2");
CourseVo c3 = new CourseVo();
c3.setCourse_name("c3");
CourseVo c4 = new CourseVo();
c4.setCourse_name("c4");
courseList.add(c1);
courseList.add(c2);
courseList.add(c3);
courseList.add(c4);
需要把courseList拆分成多个list,然后保存到lists中
List<List> lists = new ArrayList<List>();
List<CourseVo> list = new ArrayList<CourseVo>();开始做循环
CourseVo c = null;
int index =0;
for(int i=0;i<courseList.size();i++)
{
c = courseList.get(i);
list.add(c);
if((i+1)%2 != 0)
{
continue;
}
lists.add(index, list);
问题就在这里:
我已经将list添加到lists中了,可以当我clear()后,想取存放进lists中的list就取不到了???
list.clear();
List l = lists.get(index);
for(int k=0;k<l.size();k++)//这里size()=0,取不到保存进去的list
{
CourseVo course = (CourseVo)l.get(k);
System.out.println(course.getCourse_name());
}
index++;
}说明:因为每次循环的将对象保存到list中,然后再将list保存到lists中,完成之后需要将list清空,然后再保存新的对象,再依次 重复。不知道是不是clear()这个方法将add(index,list)里面的list都清空?如果是这样,那有什么方法能解决我上面的问题。谢谢了!
放到循环里
List<CourseVo> courseList = new ArrayList<CourseVo>();//最初的List
CourseVo c1 = new CourseVo();
c1.setCourse_name("c1");
CourseVo c2 = new CourseVo();
c2.setCourse_name("c2");
CourseVo c3 = new CourseVo();
c3.setCourse_name("c3");
CourseVo c4 = new CourseVo();
c4.setCourse_name("c4");
courseList.add(c1);
courseList.add(c2);
courseList.add(c3);
courseList.add(c4);
List<List> lists = new ArrayList<List>();//用来保存新的List
List<CourseVo> list = new ArrayList<CourseVo>();
CourseVo c = null;
int index =0;
for(int i=0;i<courseList.size();i++)
{
c = courseList.get(i);
list.add(c);
if((i+1)%2 != 0)
{
continue;
}
lists.add(index, list);
// List l = lists.get(index);
// for(int k=0;k<l.size();k++)
// {
// CourseVo course = (CourseVo)l.get(k);
// System.out.println(course.getCourse_name());
// }
list.clear();
List l = lists.get(index);
for(int k=0;k<l.size();k++)
{
CourseVo course = (CourseVo)l.get(k);
System.out.println(course.getCourse_name());
}
index++;
}
System.out.println(list.size());
System.out.println(lists.size()); for(int j=0;j<lists.size();j++)
{
List clist = lists.get(j);
if(clist != null)
{
System.out.println(clist.size());
for(int k=0;k<clist.size();k++)
{
CourseVo course = (CourseVo)clist.get(k);
System.out.println(course.getCourse_name());
}
}
}
// List l = lists.get(index);
// for(int k=0;k<l.size();k++)
// {
// CourseVo course = (CourseVo)l.get(k);
// System.out.println(course.getCourse_name());
// }
list.clear();
List l = lists.get(index);
不明白你为什么这样做中.你都clear了,为什么还要取出来操作啊....现在算是点明白了.
List<CourseVo> list = new ArrayList<CourseVo>();放到循环里吧.每次创建新的list.
lists中保存的是list对象的引用,你吧list.clear()了.引用里面就空了
public void clear()移除此列表中的所有元素。此调用返回后,列表将为空。 指定者:
接口 Collection<E> 中的 clear
指定者:
接口 List<E> 中的 clear
覆盖:
类 AbstractList<E> 中的 clear
{
list.add(c);
continue;
}
else{
list.add(c);
lists.add(index, list);
list = new ArrayList<CourseVo>();
}
这样我每次循环后的就是一个新的list了。还是谢谢大家。