JavaにおけるListコレクションのセグメント化処理

1652 ワード

コア処理:List.subList(int start,int end)を使用する;セグメントの切り取りを行います.
import java.util.ArrayList;
import java.util.List;

public class Test {
	
	public static void main(String[] args) {
		List list=new ArrayList();
		
		for (int i = 0; i < 99; i++) {
			list.add(i);
		}
		
		int perCount=10,index=0;
		
		int times=list.size()/perCount;
		
		do  {
			List listTemp=null;
			if(list.size()>=perCount){
				listTemp=list.subList(0, perCount);// listTemp          
			}else{
				listTemp=list.subList(0, list.size());// listTemp          

			}
			//          
			String result="";
			for (int i = 0; i < listTemp.size(); i++) {
				result+=listTemp.get(i)+",";
			}
			System.out.println(" "+index+" :>>"+result);
		
			list.removeAll(listTemp);
			
			System.out.println("        :>>"+list.size());
			
			index++;
		}
		while (index<=times);
	}

}

上には10個のセグメントがあり、コンソール出力:
 0 :>>0,1,2,3,4,5,6,7,8,9,
        :>>89
 1 :>>10,11,12,13,14,15,16,17,18,19,
        :>>79
 2 :>>20,21,22,23,24,25,26,27,28,29,
        :>>69
 3 :>>30,31,32,33,34,35,36,37,38,39,
        :>>59
 4 :>>40,41,42,43,44,45,46,47,48,49,
        :>>49
 5 :>>50,51,52,53,54,55,56,57,58,59,
        :>>39
 6 :>>60,61,62,63,64,65,66,67,68,69,
        :>>29
 7 :>>70,71,72,73,74,75,76,77,78,79,
        :>>19
 8 :>>80,81,82,83,84,85,86,87,88,89,
        :>>9
 9 :>>90,91,92,93,94,95,96,97,98,
        :>>0