java:如何让程序从List集合中每次拿两条记录,拿到29 、30后,再次从第0、第1条开始拿?

有一个集合List<News>list对象,里面有30条数据,如何让程序从集合中每次拿两条记录,拿到29、30后,再次从第0、第1条开始拿?有什么算法吗?求代码。30是可... 有一个集合List<News> list对象,里面有30条数据,如何让程序从集合中每次拿两条记录,拿到29 、30后,再次从第0、第1条开始拿?
有什么算法吗? 求代码。 30是可变的, 可能31,那么就需要最后一次拿最后一条,然后再次拿第0、第1条。
展开
 我来答
百度网友e3b1108
2013-07-23 · 超过21用户采纳过TA的回答
知道答主
回答量:50
采纳率:100%
帮助的人:36万
展开全部

我写了如下代码供你参考,具体方法你可以自己写,有困惑可以追问,希望解决了你的问题~

import java.util.ArrayList;
import java.util.List;
public class Test {
 public static void main(String[] args) {
  // 创建一个测试的List集合
  List<Integer> list = new ArrayList<Integer>();
  //给集合循环赋值,i 可随便取值 30,31,32 ...
  for(int i= 1;i<32;i++){
   list.add(i);
  }
  int size = list.size(); //获取list的长度
  int cnt = 1; //跟踪第几次取值
  //开始取值,如果size%2==0,取size%2次,否则,多取一次
  if(size%2 == 0){ //如果list.size()是偶数,每次取两个,直到取完
   for(int i=0;i<size;i+=2){
    System.out.println("第"+ cnt++ +"次取值"+list.get(i)+"::" 
                        +(list.get(i)+1));
    if(cnt==15){i=-2;cnt=1;} //这样会不断循环取值
   } 
  }else{  //如果list.size()是奇数,除余下的一个外都是每次取两个,最后取剩下的一个
   for(int i=0;i<=size;i+=2){
    if(i+1==size){//取剩下的一个     
     System.out.println("第"+ cnt++ +"次取值"+list.get(i));
    }else{
     System.out.println("第"+ cnt++ +"次取值"+list.get(i)+"::" 
                        +(list.get(i)+1));
    }
    if(cnt==15){i=-2;cnt=1;} //这样会不断循环取值
   } 
  }
 }
}
百度网友a47f6080e
2013-07-22 · TA获得超过458个赞
知道小有建树答主
回答量:127
采纳率:100%
帮助的人:122万
展开全部
你指的是循环的拿么??
如果是的话可以这样控制:
每次拿两条记录:
//定义次数的变量
class PageInfo{
int currentPage;
List newsList;

PageInfo(int currentPage,List newsList){
this.currentPage= currentPage;
this.newsList = newsList;

}
public List next(){
List returnNews = new ArrayList();

if(currentPage == newsList.length()-2){
returnNews.add(newsList.get(newsList.length-1));
returnNews.add(newsList.get(0));
currentPage = 0;
return returnNews;

}else if(currentPage == newsList.length()-1){
returnNews.add(newsList.get(0));

returnNews.add(newsList.get(1));
currentPage = 1;
return returnNews;

}else{
returnNews.add(newsList.get(currentpage+1));

returnNews.add(newsList.get(currentpage+2));
return returnNews;
}

}

}
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2013-07-22
展开全部
System.out.println(list.get(28)); // no.29

System.out.println(list.get(29)); // no.30

System.out.println(list.get(0)); // no.1

System.out.println(list.get(1)); // no.2

//list for all

for(int i=0; i<list.size; i++){

System.out.println(list.get(i));
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式