• 一点一点看JDK源码(五)java.util.ArrayList 后篇之SubList


    一点一点看JDK源码(五)java.util.ArrayList 后篇之SubList

    liuyuhang原创,未经允许禁止转载

    本文举例使用的是JDK8的API

    目录:一点一点看JDK源码(〇)

    SubList可以将一个数组根据index拆分为多个数组,使用多线程对于数组进行遍历

    未使用多线程的代码比较简单,代码示例如下:

     1 package com.FM.ArrayListStudy;
     2 
     3 import java.util.ArrayList;
     4 import java.util.List;
     5 
     6 public class SubListInArrayListStudy {
     7     public static void main(String[] args) {
     8         // 初始化list
     9         ArrayList<Integer> list01 = new ArrayList<Integer>();
    10         for (int i = 0; i < 20; i++) {//除4无余数
    11             list01.add(i + 1);
    12         }
    13         ArrayList<Integer> list02 = new ArrayList<Integer>();
    14         for (int i = 0; i < 30; i++) {//除4有余数
    15             list02.add(i + 1);
    16         }
    17         
    18         int size1 = list01.size();
    19         int last11 = size1/4;
    20         int last12 = size1/4*2;
    21         int last13 = size1/4*3;
    22         
    23         int size2 = list02.size();
    24         int last21 = size2/4;
    25         int last22 = size2/4*2;
    26         int last23 = size2/4*3;
    27         
    28         List<Integer> subList11 = list01.subList(0, last11);
    29         List<Integer> subList12 = list01.subList(last11, last12);
    30         List<Integer> subList13 = list01.subList(last12, last13);
    31         List<Integer> subList14 = list01.subList(last13, size1);
    32         
    33         List<Integer> subList21 = list02.subList(0, last21);
    34         List<Integer> subList22 = list02.subList(last21, last22);
    35         List<Integer> subList23 = list02.subList(last22, last23);
    36         List<Integer> subList24 = list02.subList(last23, size2);
    37         
    38         System.out.println(subList11+" size: "+subList11.size());
    39         System.out.println(subList12+" size: "+subList12.size());
    40         System.out.println(subList13+" size: "+subList13.size());
    41         System.out.println(subList14+" size: "+subList14.size());
    42         System.out.println("-=-=-=-=-=-=-=");
    43         System.out.println(subList21+" size: "+subList21.size());
    44         System.out.println(subList22+" size: "+subList22.size());
    45         System.out.println(subList23+" size: "+subList23.size());
    46         System.out.println(subList24+" size: "+subList24.size());
    47         
    48         
    49     }
    50 }

    运行结果

    使用多线程方式的代码连接在此,只是并非使用subList,自行修改

     一点一点看JDK源码(五)java.util.ArrayList 后篇之Spliterator

    以上!!

  • 相关阅读:
    Netty解决粘包和拆包问题的四种方案
    springboot 1.4 CXF配置
    聊聊springboot2的embeded container的配置改动
    MFC函数——CWnd::OnCreate
    《开发专家 Visual C 开发入行真功夫》笔记
    MFC中UpdateData()函数的使用
    Visual Studio 2008 添加MScomm控件的方法
    Visual Studio 2008 调试运行Bug记录
    《VS2010/MFC编程入门教程》——读书笔记
    《C++程序设计教程——给予Visual Studio 2008》读书笔记3章
  • 原文地址:https://www.cnblogs.com/liuyuhangCastle/p/9704074.html
Copyright © 2020-2023  润新知