[도구 방법] 리스트 분할
2130 단어 도구 방법
소스 리스트를 지정된 요소 수에 따라 여러 리스트로 분할
잔말 말고 바로 코드에 올리시오
/**
* List List
*
* @param source List
* @param splitItemNum List
*/
public static List> averageAssign( List source, int splitItemNum )
{
List> result = new ArrayList>();
if ( source != null && source.size() > 0 && splitItemNum > 0 ){
if ( source.size() <= splitItemNum ){
// List
result.add( source );
}else{
// list
int splitNum = ( source.size() % splitItemNum == 0 ) ? ( source.size() / splitItemNum ) : ( source.size() / splitItemNum + 1 );
List value = null;
for ( int i = 0; i < splitNum; i++ ){
if ( i < splitNum - 1 ){
value = source.subList( i * splitItemNum, ( i + 1 ) * splitItemNum );
}else{
//
value = source.subList( i * splitItemNum, source.size() );
}
result.add( value );
}
}
}
return result;
}
테스트 코드
public static void main( String[] args )
{
List source = new ArrayList();
for ( int i = 1; i <= 101; i++ ){
source.add( i );
}
List> result = averageAssign( source, 10 );
for ( List re : result ){
System.out.println( JSON.toJSONString( re ) );
}
}
실행 결과
[1,2,3,4,5,6,7,8,9,10]
[11,12,13,14,15,16,17,18,19,20]
[21,22,23,24,25,26,27,28,29,30]
[31,32,33,34,35,36,37,38,39,40]
[41,42,43,44,45,46,47,48,49,50]
[51,52,53,54,55,56,57,58,59,60]
[61,62,63,64,65,66,67,68,69,70]
[71,72,73,74,75,76,77,78,79,80]
[81,82,83,84,85,86,87,88,89,90]
[91,92,93,94,95,96,97,98,99,100]
[101]