[도구 방법] 리스트 분할

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]

좋은 웹페이지 즐겨찾기