java代码将一个数组分为多个等长度的数组

版权声明: https://blog.csdn.net/qq_32157851/article/details/82882494

首先这个是为了实现一次请求的数据量不会由于返回的数据量过大导致内存溢出,所以分批获取

@SuppressWarnings("unused")
	public static List<String> getList(int targ,List<String> mList) {
		List<String> idsStrList = new ArrayList<String>();
      List<List<String>>mEndList=new ArrayList<>();
//      System.out.println(mList.toString());
      if( mList.size()%targ!=0) {
          for (int j = 0; j < mList.size() / targ + 1; j++) {
              if ((j * targ + targ) < mList.size()) {
                  mEndList.add(mList.subList(j * targ, j * targ + targ));//0-3,4-7,8-11    j=0,j+3=3   j=j*3+1
              } else if ((j * targ + targ) > mList.size()) {
                  mEndList.add(mList.subList(j * targ, mList.size()));
              } else if (mList.size() < targ) {
                  mEndList.add(mList.subList(0, mList.size()));
              }
          }
      }else if(mList.size()%targ==0){
          for (int j = 0; j < mList.size() / targ; j++) {
              if ((j * targ + targ) <= mList.size()) {
                  mEndList.add(mList.subList(j * targ, j * targ + targ));//0-3,4-7,8-11    j=0,j+3=3   j=j*3+1
              } else if ((j * targ+ targ) > mList.size()) {
                  mEndList.add(mList.subList(j * targ, mList.size()));
              } else if (mList.size() < targ) {
                  mEndList.add(mList.subList(0, mList.size()));
              }
          }
      }
//      for (int i = 0; i < mEndList.size(); i++) {
//          log.info(mEndList.get(i).toString()+"");
//      }
      for (List<String> list : mEndList) {
    	  String idsStr = "";
    	  for (String string : list) {
    		  idsStr = idsStr + string + ",";
		}
    	  idsStrList.add(idsStr);
	}
      return idsStrList;
  }	
	public static void main(String[] args) {
		List<String> strList = new ArrayList<String>();
		for (int i = 0; i < 1000000; i++) {
			strList.add("ids"+i);
		}
		long startTime = System.currentTimeMillis();
		System.out.println(startTime);
		List<String> list = getList(20,strList);
		long endTime = System.currentTimeMillis();
		System.out.println("第一个20个任务:"+list.get(0));
		System.out.println("总共耗时:"+(endTime - startTime) );
	}

猜你喜欢

转载自blog.csdn.net/qq_32157851/article/details/82882494