java的数据结构与算法的day07

        上一次学习,我们主要了解了ArrayList和LinkList的主要区别,可是我们对他们的主要代码,还不够了解,所以今天,我们主要来讲ArrayList的主要代码思想

        1.ArrayList将保持基础数组,数组的容量,以及存储在ArrayList中的当前项数。

        2.ArrayList将提供一种机智以改变基础数组的容量。通过获得一个新的数组,将原数组拷贝到新数组中来改变数组的容量

        3.ArrayList将提供get和set方法的实现

        4.ArrayList将提供基本的例程,比如size()、isEmpty和clear,它们是典型的单行程序;还提供remove,以及两种不同版本的add。如果数组的大小和容量相同,那么两个add例程将增加容量。其中,通过上一次学习,我们知道给数组添加长度,其实是很耗费资源的,每次添加末尾,如果超出原数组长度,都得要重新扩充数组大小。

        与其扩充的耗费资源,这个问题解决不了,那就换个思路想:

        我们减少扩充次数,那么我们怎么操作,没错了,就是符合扩充条件的时候,我们就一次性干脆多扩充几个大小,不再是所谓的扩充1个长度,而是扩充5个长度,甚至扩充10个长度。

        5.ArrayList将提供一个实现Iterator接口的类。这个类将存储迭代序列中的下一项的下标,并提供next、hasNext和remove等方法的实现。ArrayList的迭代器方法将直接返回实现Iterator接口的该类的新构造实例。

 public static void main(String[] args) throws IllegalAccessException {
        //构造方法
        System.out.println("===================构造方法========================");
        Constructor c[] = ArrayList.class.getDeclaredConstructors();
        for(int i=0 ; i<c.length ; i++){
            Constructor c1 = c[i];
            System.out.println(c1.getName());
            System.out.println("构造方法中是否有可变的参数:"+c1.isVarArgs());
            Class cc[] = c1.getParameterTypes();
            System.out.print("构造方法中的参数有:");
            for(int j=0 ; j< cc.length ; j++){
                System.out.print(cc[j]+"  ");
            }
            System.out.println("\n=======================================================");
        }

        //成员变量
        System.out.println();
        System.out.println("===================成员变量========================");
        Field[] f = ArrayList.class.getDeclaredFields();
        for(int i=0 ; i<f.length ; i++){
            Field f1 = f[i];
            System.out.println("成员变量的名称:"+f1.getName());
            System.out.println("成员变量的权限:"+f1.getModifiers());
            System.out.println("成员变量的数据类型:"+f1.getAnnotatedType());
            System.out.println("=======================================================");
        }

        //成员方法
        System.out.println();
        System.out.println("===================成员方法========================");
        Method m[] = ArrayList.class.getDeclaredMethods();
        for(int i=0 ; i<m.length ; i++){
            Method m1 = m[i];
            System.out.println("方法的名字:"+m1.getName());
            System.out.println("方法的权限:"+m1.getModifiers());
            System.out.println("方法的返回值:"+m1.getReturnType());
            System.out.println("方法的参数中是否有可变参数:"+m1.isVarArgs());
            System.out.print("方法的参数内容有:");
            Class cc[] = m1.getParameterTypes();
            for(int j=0 ; j<cc.length ; j++){
                System.out.print(cc[j]+"  ");
            }
            System.out.println("\n=======================================================");
        }

    }

        下面通过上面的(反射)代码,将ArrayList类代码的大致情况展示出来,当然也是可以通过快捷键显示的(嘻嘻)

F:\JAVA.JDK\jdk-13.0.2_windows-x64_bin\bin\java.exe "-javaagent:F:\JAVA.SOFT\IDEA2.0 (JAVA)\IntelliJ IDEA Community Edition 2020.3\lib\idea_rt.jar=58029:F:\JAVA.SOFT\IDEA2.0 (JAVA)\IntelliJ IDEA Community Edition 2020.3\bin" -Dfile.encoding=UTF-8 -classpath H:\数据结构与算法.workspace\out\production\数据结构与算法.workspace ArrayList.MyArrayList
===================构造方法========================
java.util.ArrayList
构造方法中是否有可变的参数:false
构造方法中的参数有:int  
=======================================================
java.util.ArrayList
构造方法中是否有可变的参数:false
构造方法中的参数有:interface java.util.Collection  
=======================================================
java.util.ArrayList
构造方法中是否有可变的参数:false
构造方法中的参数有:
=======================================================

===================成员变量========================
成员变量的名称:serialVersionUID
成员变量的权限:26
成员变量的数据类型:long
=======================================================
成员变量的名称:DEFAULT_CAPACITY
成员变量的权限:26
成员变量的数据类型:int
=======================================================
成员变量的名称:EMPTY_ELEMENTDATA
成员变量的权限:26
成员变量的数据类型:java.lang.Object[]
=======================================================
成员变量的名称:DEFAULTCAPACITY_EMPTY_ELEMENTDATA
成员变量的权限:26
成员变量的数据类型:java.lang.Object[]
=======================================================
成员变量的名称:elementData
成员变量的权限:128
成员变量的数据类型:java.lang.Object[]
=======================================================
成员变量的名称:size
成员变量的权限:2
成员变量的数据类型:int
=======================================================

===================成员方法========================
方法的名字:removeRange
方法的权限:4
方法的返回值:void
方法的参数中是否有可变参数:false
方法的参数内容有:int  int  
=======================================================
方法的名字:rangeCheckForAdd
方法的权限:2
方法的返回值:void
方法的参数中是否有可变参数:false
方法的参数内容有:int  
=======================================================
方法的名字:outOfBoundsMsg
方法的权限:10
方法的返回值:class java.lang.String
方法的参数中是否有可变参数:false
方法的参数内容有:int  int  
=======================================================
方法的名字:outOfBoundsMsg
方法的权限:2
方法的返回值:class java.lang.String
方法的参数中是否有可变参数:false
方法的参数内容有:int  
=======================================================
方法的名字:add
方法的权限:1
方法的返回值:void
方法的参数中是否有可变参数:false
方法的参数内容有:int  class java.lang.Object  
=======================================================
方法的名字:add
方法的权限:1
方法的返回值:boolean
方法的参数中是否有可变参数:false
方法的参数内容有:class java.lang.Object  
=======================================================
方法的名字:add
方法的权限:2
方法的返回值:void
方法的参数中是否有可变参数:false
方法的参数内容有:class java.lang.Object  class [Ljava.lang.Object;  int  
=======================================================
方法的名字:remove
方法的权限:1
方法的返回值:class java.lang.Object
方法的参数中是否有可变参数:false
方法的参数内容有:int  
=======================================================
方法的名字:remove
方法的权限:1
方法的返回值:boolean
方法的参数中是否有可变参数:false
方法的参数内容有:class java.lang.Object  
=======================================================
方法的名字:get
方法的权限:1
方法的返回值:class java.lang.Object
方法的参数中是否有可变参数:false
方法的参数内容有:int  
=======================================================
方法的名字:equals
方法的权限:1
方法的返回值:boolean
方法的参数中是否有可变参数:false
方法的参数内容有:class java.lang.Object  
=======================================================
方法的名字:hashCode
方法的权限:1
方法的返回值:int
方法的参数中是否有可变参数:false
方法的参数内容有:
=======================================================
方法的名字:clone
方法的权限:1
方法的返回值:class java.lang.Object
方法的参数中是否有可变参数:false
方法的参数内容有:
=======================================================
方法的名字:indexOf
方法的权限:1
方法的返回值:int
方法的参数中是否有可变参数:false
方法的参数内容有:class java.lang.Object  
=======================================================
方法的名字:clear
方法的权限:1
方法的返回值:void
方法的参数中是否有可变参数:false
方法的参数内容有:
=======================================================
方法的名字:lastIndexOf
方法的权限:1
方法的返回值:int
方法的参数中是否有可变参数:false
方法的参数内容有:class java.lang.Object  
=======================================================
方法的名字:isEmpty
方法的权限:1
方法的返回值:boolean
方法的参数中是否有可变参数:false
方法的参数内容有:
=======================================================
方法的名字:replaceAll
方法的权限:1
方法的返回值:void
方法的参数中是否有可变参数:false
方法的参数内容有:interface java.util.function.UnaryOperator  
=======================================================
方法的名字:size
方法的权限:1
方法的返回值:int
方法的参数中是否有可变参数:false
方法的参数内容有:
=======================================================
方法的名字:subList
方法的权限:1
方法的返回值:interface java.util.List
方法的参数中是否有可变参数:false
方法的参数内容有:int  int  
=======================================================
方法的名字:toArray
方法的权限:1
方法的返回值:class [Ljava.lang.Object;
方法的参数中是否有可变参数:false
方法的参数内容有:class [Ljava.lang.Object;  
=======================================================
方法的名字:toArray
方法的权限:1
方法的返回值:class [Ljava.lang.Object;
方法的参数中是否有可变参数:false
方法的参数内容有:
=======================================================
方法的名字:iterator
方法的权限:1
方法的返回值:interface java.util.Iterator
方法的参数中是否有可变参数:false
方法的参数内容有:
=======================================================
方法的名字:contains
方法的权限:1
方法的返回值:boolean
方法的参数中是否有可变参数:false
方法的参数内容有:class java.lang.Object  
=======================================================
方法的名字:spliterator
方法的权限:1
方法的返回值:interface java.util.Spliterator
方法的参数中是否有可变参数:false
方法的参数内容有:
=======================================================
方法的名字:addAll
方法的权限:1
方法的返回值:boolean
方法的参数中是否有可变参数:false
方法的参数内容有:interface java.util.Collection  
=======================================================
方法的名字:addAll
方法的权限:1
方法的返回值:boolean
方法的参数中是否有可变参数:false
方法的参数内容有:int  interface java.util.Collection  
=======================================================
方法的名字:set
方法的权限:1
方法的返回值:class java.lang.Object
方法的参数中是否有可变参数:false
方法的参数内容有:int  class java.lang.Object  
=======================================================
方法的名字:readObject
方法的权限:2
方法的返回值:void
方法的参数中是否有可变参数:false
方法的参数内容有:class java.io.ObjectInputStream  
=======================================================
方法的名字:writeObject
方法的权限:2
方法的返回值:void
方法的参数中是否有可变参数:false
方法的参数内容有:class java.io.ObjectOutputStream  
=======================================================
方法的名字:forEach
方法的权限:1
方法的返回值:void
方法的参数中是否有可变参数:false
方法的参数内容有:interface java.util.function.Consumer  
=======================================================
方法的名字:ensureCapacity
方法的权限:1
方法的返回值:void
方法的参数中是否有可变参数:false
方法的参数内容有:int  
=======================================================
方法的名字:trimToSize
方法的权限:1
方法的返回值:void
方法的参数中是否有可变参数:false
方法的参数内容有:
=======================================================
方法的名字:retainAll
方法的权限:1
方法的返回值:boolean
方法的参数中是否有可变参数:false
方法的参数内容有:interface java.util.Collection  
=======================================================
方法的名字:removeAll
方法的权限:1
方法的返回值:boolean
方法的参数中是否有可变参数:false
方法的参数内容有:interface java.util.Collection  
=======================================================
方法的名字:removeIf
方法的权限:1
方法的返回值:boolean
方法的参数中是否有可变参数:false
方法的参数内容有:interface java.util.function.Predicate  
=======================================================
方法的名字:removeIf
方法的权限:0
方法的返回值:boolean
方法的参数中是否有可变参数:false
方法的参数内容有:interface java.util.function.Predicate  int  int  
=======================================================
方法的名字:checkInvariants
方法的权限:0
方法的返回值:void
方法的参数中是否有可变参数:false
方法的参数内容有:
=======================================================
方法的名字:sort
方法的权限:1
方法的返回值:void
方法的参数中是否有可变参数:false
方法的参数内容有:interface java.util.Comparator  
=======================================================
方法的名字:listIterator
方法的权限:1
方法的返回值:interface java.util.ListIterator
方法的参数中是否有可变参数:false
方法的参数内容有:int  
=======================================================
方法的名字:listIterator
方法的权限:1
方法的返回值:interface java.util.ListIterator
方法的参数中是否有可变参数:false
方法的参数内容有:
=======================================================
方法的名字:elementData
方法的权限:0
方法的返回值:class java.lang.Object
方法的参数中是否有可变参数:false
方法的参数内容有:int  
=======================================================
方法的名字:grow
方法的权限:2
方法的返回值:class [Ljava.lang.Object;
方法的参数中是否有可变参数:false
方法的参数内容有:int  
=======================================================
方法的名字:grow
方法的权限:2
方法的返回值:class [Ljava.lang.Object;
方法的参数中是否有可变参数:false
方法的参数内容有:
=======================================================
方法的名字:indexOfRange
方法的权限:0
方法的返回值:int
方法的参数中是否有可变参数:false
方法的参数内容有:class java.lang.Object  int  int  
=======================================================
方法的名字:lastIndexOfRange
方法的权限:0
方法的返回值:int
方法的参数中是否有可变参数:false
方法的参数内容有:class java.lang.Object  int  int  
=======================================================
方法的名字:fastRemove
方法的权限:2
方法的返回值:void
方法的参数中是否有可变参数:false
方法的参数内容有:class [Ljava.lang.Object;  int  
=======================================================
方法的名字:equalsArrayList
方法的权限:2
方法的返回值:boolean
方法的参数中是否有可变参数:false
方法的参数内容有:class java.util.ArrayList  
=======================================================
方法的名字:equalsRange
方法的权限:0
方法的返回值:boolean
方法的参数中是否有可变参数:false
方法的参数内容有:interface java.util.List  int  int  
=======================================================
方法的名字:checkForComodification
方法的权限:2
方法的返回值:void
方法的参数中是否有可变参数:false
方法的参数内容有:int  
=======================================================
方法的名字:hashCodeRange
方法的权限:0
方法的返回值:int
方法的参数中是否有可变参数:false
方法的参数内容有:int  int  
=======================================================
方法的名字:shiftTailOverGap
方法的权限:2
方法的返回值:void
方法的参数中是否有可变参数:false
方法的参数内容有:class [Ljava.lang.Object;  int  int  
=======================================================
方法的名字:batchRemove
方法的权限:0
方法的返回值:boolean
方法的参数中是否有可变参数:false
方法的参数内容有:interface java.util.Collection  boolean  int  int  
=======================================================
方法的名字:elementAt
方法的权限:8
方法的返回值:class java.lang.Object
方法的参数中是否有可变参数:false
方法的参数内容有:class [Ljava.lang.Object;  int  
=======================================================
方法的名字:nBits
方法的权限:10
方法的返回值:class [J
方法的参数中是否有可变参数:false
方法的参数内容有:int  
=======================================================
方法的名字:setBit
方法的权限:10
方法的返回值:void
方法的参数中是否有可变参数:false
方法的参数内容有:class [J  int  
=======================================================
方法的名字:isClear
方法的权限:10
方法的返回值:boolean
方法的参数中是否有可变参数:false
方法的参数内容有:class [J  int  
=======================================================
方法的名字:replaceAllRange
方法的权限:2
方法的返回值:void
方法的参数中是否有可变参数:false
方法的参数内容有:interface java.util.function.UnaryOperator  int  int  
=======================================================

进程已结束,退出代码为 0

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值