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条。 展开
有什么算法吗? 求代码。 30是可变的, 可能31,那么就需要最后一次拿最后一条,然后再次拿第0、第1条。 展开
3个回答
展开全部
我写了如下代码供你参考,具体方法你可以自己写,有困惑可以追问,希望解决了你的问题~
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;} //这样会不断循环取值
}
}
}
}
展开全部
你指的是循环的拿么??
如果是的话可以这样控制:
每次拿两条记录:
//定义次数的变量
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;
}
}
}
如果是的话可以这样控制:
每次拿两条记录:
//定义次数的变量
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));
}
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));
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询