IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Java知识库 -> java的数据结构与算法的day07 -> 正文阅读

[Java知识库]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

  Java知识库 最新文章
计算距离春节还有多长时间
系统开发系列 之WebService(spring框架+ma
springBoot+Cache(自定义有效时间配置)
SpringBoot整合mybatis实现增删改查、分页查
spring教程
SpringBoot+Vue实现美食交流网站的设计与实
虚拟机内存结构以及虚拟机中销毁和新建对象
SpringMVC---原理
小李同学: Java如何按多个字段分组
打印票据--java
上一篇文章      下一篇文章      查看所有文章
加:2021-08-07 11:51:51  更:2021-08-07 11:52:43 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/10 15:42:53-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码