求教,关于List循环取值的问题

xiaotqc0000 2020-05-27 04:52:33
现有一个list集合,list里存有10个数,设置一个起始点,一个间隔数,总共取几个数,如已取到的数就跳过,取到结尾时从头开始循环取。
请问有大神知道怎么写么。

例如:
list[1,2,3,4,5,6,7,8,9,10],起始点是2(该数算不录取),间隔数为2,总共取6个数。
也就是从2开始间隔2个数,第一个值为5,第二值为8,第三个值为1,第四个值为4,第五个值为7,第六个为10。
1、跳过 3,4 取 5
2、跳过6,7 取 8
3、跳过 9,10 取 1
4、跳过2,3 取 4
5、跳过5,6 取 7
6、跳过8,9 取 10
...全文
319 5 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
王adj 2020-06-24
  • 打赏
  • 举报
回复
用key-value来记录值,存在则跳过,不存在则取出
qq_39936465 2020-06-24
  • 打赏
  • 举报
回复
引用 楼主 xiaotqc0000 的回复:
现有一个list集合,list里存有10个数,设置一个起始点,一个间隔数,总共取几个数,如已取到的数就跳过,取到结尾时从头开始循环取。 请问有大神知道怎么写么。 例如: list[1,2,3,4,5,6,7,8,9,10],起始点是2(该数算不录取),间隔数为2,总共取6个数。 也就是从2开始间隔2个数,第一个值为5,第二值为8,第三个值为1,第四个值为4,第五个值为7,第六个为10。 1、跳过 3,4 取 5 2、跳过6,7 取 8 3、跳过 9,10 取 1 4、跳过2,3 取 4 5、跳过5,6 取 7 6、跳过8,9 取 10
你这个取数又不需要跳过已经取的数,直接10取模就行了。

public class test2 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		List<Integer> list=Arrays.asList(1,2,3,4,5,6,7,8,9,10);
		//计数器
		int count=0;
		//初始位
		int index=1;
		while(count<6) {
			//每次加3对10取模
			index=(index+3)%10;
			System.out.println(list.get(index));
			count++;
		}
	}
}
qq_45858397 2020-06-24
  • 打赏
  • 举报
回复
可以设一个占位符
meet_aas 2020-05-27
  • 打赏
  • 举报
回复
List<Integer> list=Arrays.asList(1,2,3,4,5,6,7,8,9,10); List<Integer> result=new ArrayList<Integer>(); int initIndex=1; int value=0; int listCount=list.size(); for (int i = 0; i < 6; i++) { initIndex+=3; if (initIndex>=listCount) { if (initIndex-listCount==0) { initIndex=0; }else if(initIndex -listCount==1) { initIndex=1; }else if(initIndex -listCount==2) { initIndex=2; } } value=list.get(initIndex); result.add(value); } System.out.println(result); 这样写的结果为:[5, 8, 1, 4, 7, 10]
伱給的囘憶 2020-05-27
  • 打赏
  • 举报
回复
public static void main(String[] args) {
		//间隔数(间隔2个数,下标需要移动3)
		int interval=2+1;
		//开始点(集合里下标是以0开始)
		int start=2-1;
		//标记集合下标
		int log=start;
		ArrayList<Integer> newNums = new ArrayList<Integer>();
		
		//list初始化赋值
		ArrayList<Integer> nums = new ArrayList<Integer>();
		nums.add(1);
		nums.add(2);
		nums.add(3);
		nums.add(4);
		nums.add(5);
		nums.add(6);
		nums.add(7);
		nums.add(8);
		nums.add(9);
		nums.add(10);
	
		//取6个数就跳出循环
		while(newNums.size()<6) {
			log=log+interval;
			//如果大于最大下标,重置下标
			if(log>=nums.size()) {
				log=log-nums.size();
			}
			//如果不为0就取出来放入新的list
			if(nums.get(log)!=0) {
				newNums.add(nums.get(log));
				//取了数后就在原先位置的数置为0
				nums.set(log, 0);
			}
		}
		System.out.println("最终结果:");
		for(int i:newNums) {
			System.out.print(i+",");
		}
		
	}

51,397

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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