MyArrayList——自己实现ArrayList】的更多相关文章

注:转载请注明原文地址:http://www.cnblogs.com/ygj0930/p/5965205.html      代码已移植:https://github.com/ygj0930/MyArrayList  大家fork之余随手给我个star呀~ ArrayList是我们常用的集合类之一,其实它的实现机制很简单,底层还是使用了一个传统的Array数组来保存数据的.而动态的实现,只不过是定义了其在长度不足时创建一个更大的数组并把原数组的数据复制过去罢了!而对其保存的数据的增删查该操作,也…
这篇博客实现一个简单的ArrayList集合.博客里的代码首先根据自己的想法实现,在走不动的情况下会去参考JDK源代码.所以阅读本文,不要抱着跟JDK源码对比的心态.于我个人而言,国庆期间,纯属娱乐.写完打游戏去. 首先写搭建一个架子 public class MyArrayList<E> { /* * 注意ArrayList的大小是可变的,此处设定的数组大小为默认大小,和每次扩建的大小 * */ //默认的数组大小 private int DEFAULT_CAPACITY = 1; //存储…
ArrayList是日常开发中经常使用到的集合,其底层采用数组实现,因此元素按序存放.其优点是可以使用下标来访问元素,时间复杂度是O(1).其缺点是删除和增加操作需要使用System.arraycopy()来移动部分受影响的元素,时间复杂度为O(N).同时ArrayList由于是采用数组来存放数据,因此会有容量限制,在使用时需要扩容,当插入操作超出数组长度,就会进行扩容,扩容后数组的长度为原来的1.5倍,默认的数组长度是10. 为了更好的掌握ArrayList,因此阅读并仿照ArrayList源…
集合 l  Collection 层次结构中的根接口.Collection 表示一组对象,这些对象也称为 collection 的元素.一些 collection 允许有重复的元素,而另一些则不允许.一些 collection 是有序的,而另一些则是无序的.JDK 提供更具体的子接口(如 Set 和 List.Queue)实现.此接口通常用来传递 collection,并在需要最大普遍性的地方操作这些 collection. l  List:有序的 collection(也称为序列).此接口的用…
JAVA8已经发布很久,是自java5(2004年发布)之后Oracle发布的最重要的一个版本.其中包括语言.编译器.库.工具和JVM等诸多方面的新特性,对于国内外互联网公司来说,Java8是以后技术开发的趋势.这里主要讲解在开发中几个核心的新特性.(主要从新特性概念解释.语法定义.简单代码演示.优缺点分析.项目实战几个方面编写). 核心特性一览 图中Java8的这6个核心特性,小乐将会一一阐述,请多关注我 乐字节,转载请注明出处和作者! 接口默认方法 在注册网站时,我们会在注册后使用网站提供的…
1 1 1 .NET 面试题, C# ,override , overloading, 覆写, 重载,.NET,ASP.NET, override (覆写/重写): 方法名相同,参数的个数和类型相同,内部实现不同. The override modifier is required to extend or modify the abstract or virtual implementation of an inherited method, property, indexer, or eve…
本文博客地址:http://blog.csdn.net/qq1084283172/article/details/78320445 看雪上有作者(寒号鸟二代)将阿里移动早期的Android加固进行了逆向分析,得到了能够运行成功的NDK代码,主要是基于第2界阿里移动破解大赛的apk逆向分析出来的,文章的原地址<阿里早期加固代码还原4.4-6.0>.周末有空仔细阅读和分析了一下作者寒号鸟二代给出的逆向还原的代码,发现阿里移动的Android加固在dalvik虚拟机模式下dex文件的加载方案和看雪上…
注:转载请注明原文地址:http://www.cnblogs.com/ygj0930/p/5965205.html ArrayList是我们常用的集合类之一,其实它的实现机制很简单,底层还是使用了一个传统的Array数组来保存数据的.而动态的实现,只不过是定义了其在长度不足时创建一个更大的数组并把原数组的数据复制过去罢了!而对其保存的数据的增删查该操作,也只不过是封装了一系列最基本的操作数组数据的动作而已.下面,我把自己实现的简略版ArrayList贴上来,供伙伴们参考. public clas…
ArrayList简介 ArrayList是一个动态数组,Array的复杂版本,它提供了动态的增加和减少元素,实现了ICollection和IList接口,灵活的设置数组的大小等好处. MyArrayList 在实现MyArrayList前先实现MyList,MyAbstractList,他们的关系如下. MyArrayList--->(继承于)MyAbstractList--->(实现)MyList接口--->(实现)java.lang.Iterable接口 通过编写新的ArrayLi…
通过.NET反编译工具可以查看到ArrayList内部的代码,发现ArrayList并非由链表实现,而是由一个不断扩容的数组对象组成. 下面模仿ArrayList写一个自己的MyArrayList. using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Collections; namespace 模仿动态数组 { /// <summary> ///…
杂谈最基本数据结构--"线性表": 表结构是一种最基本的数据结构,最常见的实现是数组,几乎在每个程序每一种开发语言中都提供了数组这个顺序存储的线性表结构实现. 什么是线性表? 由0个或多个数据元素组成的有限序列.如果没有元素,称为空表,如果存在多个元素,则第一个元素无前驱,最后一个元素无后继,其他元素元素都有且只有一个前驱和后继. ArrayList和LinkedList ArrayList和LinkedList是顺序存储结构和链式存储结构的表在java语言中的实现. ArrayLis…
public class MyArrayList { //容量 ; //存放数组元素 private object[] _items; //数组大小 private int _size; //元素个数为0的数组状态 ]; public MyArrayList() { this._items = emptyArray; } public MyArrayList( int capacity) { ) { throw new ArgumentOutOfRangeException("capacity&…
package other; import java.util.ArrayList; import java.util.Iterator; import java.util.List; import java.util.NoSuchElementException; /* * ArrayList泛型类的实现 */ public class MyArrayList<AnyType> implements Iterable<AnyType> { private static final…
对于ArrayList相比大家都很熟悉,它是java中最常用的集合之一.下面就给出它的自我实现的java代码. 需要说明的一点是,它是基于数组创建的.所以它在内存中是顺序存储,对于查找十分的方便. package com.pinjia.shop.common.collection; import java.util.Iterator; import java.util.NoSuchElementException; /** * Created by wangwei on 2017/1/3. *…
接口 List<E> 是一个接口: ArrayList<E> 是一个类:是一个实现了List接口的类,因此可以List里面定义的所有的方法都实现了. 1.ArrayList是实现了基于动态数组的数据结构,LinkedList基于链表的数据结构. 2.对于随机访问get和set,ArrayList觉得优于LinkedList,因为LinkedList要移动指针 3.对于新增和删除操作add和remove,LinedList比较占优势,因为ArrayList要移动数据. 一.时间复杂度…
重写ArrayList类,为防止冲突,重写为MyArrayList,未继承Iterable类. public class MyArrayList<AnyType>{ int N=10; AnyType a[]; //定义一个数组,未分配空间 int theSize; public MyArrayList(){ clear(); } public void clear(){ theSize=0; increaseSpace(N); //对数组初始化,扩容为10 } public int size…
这几天仔细研究下关于ArrayList容器的jdk源码,感觉收获颇多,以前自己只知道用它,但它里面具体是怎样实现的就完全不清楚了.于是自己尝试模拟写下java的ArrayList容器,简单了实现的ArrayList类中几个方法,当然这仅仅只是加深对容器的理解,因此希望我的分享也能够给大家带来帮助. 一.AyyayList到底是什么? 其实ArrayList就是一个java中的一个类而已,说起来没什么复杂的,好,既然是类,是不是就有成员属性和成员方法.点击查看ArrayList的outline,来…
最近就是想扒一扒存在硬盘里面的学习资料(突然想到什么),把以前写过的一些东西整理一下分享出来. 这边是ArrayList 的简单实现,当然只实现了部分方法 package com.yck.collection; import java.util.Iterator; /** * 手动实现ArrayList的主要功能 * ArrayList的底层实现就是数组 * */ public class MyArrayList { private Object []elementDate; // privat…
(转载请标明出处) 1.ArrayLis t的实现 2.LinkedLis t的实现 3.ArrayList 和 LinkedList 的区别 ArrayList 的实现: 1.MyArrayList将保持基础数组,数组的容量.以及存储在MyArrayList中的当前项数.  2.MyArrayList将提供一种机制以改变基础数组的容量.通过或者一个新数组,将老数组拷贝到新数组中改变数组的容量,允许虚拟机回收老数组.  3.MyArrayList将提供get和set的实现.  4.MyArray…
前面一章节,我们介绍了集合的类图,那么本节将学习Collection 接口中最常用的子类ArrayList类,本章分为下面几部分讲解(说明本章采用的JDK1.6源码进行分析,因为个人认为虽然JDK1.8进行了部分改动,但万变不离其宗,仍然采用的JDK1.6的引子进行的优化,因此学会了1.6对于1.8也就理解了). 一.ArrayList 的常见功能 在分析ArrayList的源码前,我们先看下ArrayList的常见的功能: package study.collection; import ja…
我们知道 ArrayList 是一个集合,它能存放各种不同类型的数据,而且其容量是自动增长的.那么它是怎么实现的呢? 其实 ArrayList 的底层是用 数组实现的.我们查看 JDK 源码也可以发现.而用数组实现集合的原理有两点: 1.能自动扩容 2.能存放不同类型的数据 这两点我们是这样解决的: 1.当一个数据存放满了,我们就将这个数据复制到一个新的数组中,而这个新的数组容量要比原数组大.通过这样不断的扩大数组长度,也就是集合的容量.那么这里我们用到了这个方法  System.arrayco…
因为本人目前为止学习编程不过七个月,所以后面的感悟对于一些大神来说可能嗤之以鼻,但对于一些刚刚入门的萌新来说在理解面向对象的思想上,以及抽象类和接口应该怎么设计等方面应该还是会有所帮助的 首先我们定义一个自己的Collection接口: 创建自己的ArrayList类并实现此接口 再创建自己的LinkedList类并实现MyCollection接口 现在两个类都创建好了,我们开始定义Iterator接口 在MyArrayList里创建一个内部类实现Iterator并封装,同时开放一个接口让别人获…
自定义实现ArrayList很简单,只需要明白下面几点 1.ArrayList 底层是由数组组成的 2.数组有容量限制,但是ArrayList并没有(实际上也有,Integer.MAX_VALUE).在增加数据的时候做好扩容 3.移除数组中的某一个数据要怎么做 下面是我自定义的ArrayList.基本的增删改查是有了. public class MyArrayList<E> { private int capacity = 10; //arrayList 容量 private Object[]…
一.定义MyList接口,包含列表常见方法: import java.util.Iterator; /** * 线性表(列表)的接口定义 */ public interface MyList<T> extends Iterator<T> { /** 新增一个元素 */ void add(T element); /** 删除相同元素 */ void delete(T element); /** 根据索引删除元素 */ void delete(int index); /** * 将指定…
ArrayList, LinkedList, Vector - dudu:史上最详解 我们来比较一下ArrayList, LinkedLIst和Vector它们之间的区别.BZ的JDK版本是1.7.0_80 经常在面试的时候,或者在大家做project的时候,都会被它们的区别产生疑惑.或者对它们的用法并不是很了解.那么我们今天就来看看他们的区别和用法. 以下是本文的大纲: 一.ArrayList,LinkedList和Vector的区别 二.详解ArrayList 三.详解Vector 四.详解…
1.首先自定义一个Operate接口,如下所示: public interface Operate { public Integer caozuo(Integer i); } 2.实现自定义的ArrayList类,即自定义MyArrayList类,如下: import java.util.ArrayList; public class MyArrayList { private ArrayList<Integer> list; private ArrayList<Integer>…
思路: 一 载体 ArrayList是一个集合容器,必然要有一个保存数据的载体. public class MyArraylist { private final static int INIT_COUNT = 10; Object[] arrays; public MyArraylist() { this(INIT_COUNT); } public MyArraylist(int count) { arrays = new Object[count]; } } 二属性 长度 得到集合会初始化一…
一,ArrayList 实现自己的ArrayList:主要是添加方法,理解自动扩容机制 代码+注释 package com.amazing.jdk.learn2List.list_08_13; /** * 1.实现ArrayList接口的增删改查方法 * 2.理解自动扩容机制 *参考:http://blog.csdn.net/u011240877/article/details/52802849 */ public class MyArrayList<E> { //需要扩容的数组 transi…
package zy809; public class myArrayList { /** 存放元素 */ private Object[] data;// 创建一个数组引用. /** 元素的个数 */ private int size;// 一个指标,记录数组的元素个数. /* * 三种构造方法. */ public myArrayList() {// 构造一个初始为10的空列表 // data = new Object[10]; this(10); } public myArrayList(…
import java.util.Iterator; import java.util.NoSuchElementException; public class MyArrayList<T> implements Iterable<T> { //默认数组大小 ; //表大小 private int theSize; //数组存储 private T[] theItems; //初始化表 public MyArrayList(){ doClear(); } private void…