ページングのキーアルゴリズムとDemo

1677 ワード

  • アルゴリズムソース
  •      public static List getSubList(ArrayList arr,int index,int size){
            //      
            //  ,    int  ,     :10/3 = 3.xxxx = 3  !    floor   
            int requestCount = arr.size() / size;
            
            //  null    ,       ArrayList  
            //ArrayList   List  
            if(index < 0 || index > requestCount)
                return new ArrayList();
            
            //          item    
            int from = index * size;
            
            //          
            int to = Math.min(arr.size(), (index + 1) * size);
            
            //  arr ,  offset length     
            List subList = arr.subList(from, to);
            return subList;
        }
    
    
  • テスト用関数の作成:
  • public static ArrayList makeArrayList(int num){
        ArrayList arr = new ArrayList<>(num);
        for(int i = 0; i < num; i++){
            arr.add(i);
        }
        return arr;
    }
    
  • テスト:
  •       public static void main(String[] args) throws IOException {
            
            ArrayList list = makeArrayList(17);
            List  subList = null;
            
                   //  :    10  ,   7         ,         70   
                  //    ArrayList   17   ,         null  
            for(int i = 0; i < 10; i++){
                  subList = getSubList(list,i,7);
                  System.out.println(subList.toString());
            }
         }
    
  • 結果:
  • [0, 1, 2, 3, 4, 5, 6]
    [7, 8, 9, 10, 11, 12, 13]
    [14, 15, 16]
    []
    []
    []
    []
    []
    []
    []
    
  • javaの不足点: