博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
基本数据结构之ArrayList
阅读量:6504 次
发布时间:2019-06-24

本文共 2955 字,大约阅读时间需要 9 分钟。

hot3.png

问题描述: 

ArrayList

问题分析: 

基本的实现

代码实现:

package c03;import java.util.Iterator;import static self.util.*;/** * @project: DataStructureAndAlgorithmAnalysis * @filename: MyArrayList.java * @version: 0.10 * @author: Jimmy Han * @date: 21:40 2015/7/13 * @comment: List implemented with Array * @result:*/public class MyArrayList
 implements Iterable
 {    private static final int DEFAULT_CAPACITY = 10;    private int theSize;    private AnyType[] theItems;    public MyArrayList(){doClear();}    public void clear(){doClear();}    private void doClear(){        theSize = 0; ensureCapacity(DEFAULT_CAPACITY);    }    public int size(){return theSize;}    public boolean isEmpty(){return size() == 0;}    public void trimToSize(){ensureCapacity(size());}    public AnyType get(int idx){        if(idx < 0 || idx >= size())            throw new ArrayIndexOutOfBoundsException();        return theItems[idx];    }    public AnyType set(int idx, AnyType newVal){        if(idx < 0 || idx >= size())            throw new ArrayIndexOutOfBoundsException();        AnyType old = theItems[idx];        theItems[idx] = newVal;        return old;    }    public void ensureCapacity(int newCapacity){        if(newCapacity < theSize)            return;        AnyType[] old = theItems;        theItems = (AnyType[]) new Object[newCapacity];        for(int i = 0; i < size(); i++)            theItems[i] = old[i];    }    public boolean add(AnyType x){        add(size(), x);        return true;    }    public void add(int idx, AnyType x){        if(theItems.length == size())            ensureCapacity(size()*2 + 1);        for(int i = theSize; i > idx; i--)            theItems[i] = theItems[i - 1];        theItems[idx] = x;        theSize++;    }    public AnyType remove(int idx){        AnyType removeItem = theItems[idx];        for(int i = idx; i < size() - 1; i++)            theItems[i] = theItems[i + 1];        theSize--;        return removeItem;    }    public Iterator
 iterator() {        return new ArrayListIterator();    }    private class ArrayListIterator implements java.util.Iterator
{        private int current = 0;        public boolean hasNext(){            return current < size();        }        public AnyType next(){            if(!hasNext())                throw new java.util.NoSuchElementException();            return theItems[current++];        }        public void remove(){            MyArrayList.this.remove(--current);        }    }    public static void main(String[] args) {        MyArrayList
 marr = new MyArrayList
();        marr.add("www");        marr.add("bw");        marr.add(".com");        marr.add("s");        marr.remove(3);        marr.add(".cn");        self.util.printIterator(marr.iterator());        System.out.println(marr.get(2));        System.out.println(marr.set(1,"hello"));       self.util.printIterator(marr.iterator());    }}

转载于:https://my.oschina.net/jimmyhan/blog/516026

你可能感兴趣的文章
mysqldump 备份命令使用中的一些经验总结
查看>>
Linux下MySql安装配置方法总结
查看>>
本IT博客用于域名投资、互联网、资源下载等相关干货收藏和学习
查看>>
Rad Studio 10.1 UP1 移动开发 关于编译ANDROID版本
查看>>
如何重置migration
查看>>
python操作PostgreSQL数据库
查看>>
ArrayList底层实现
查看>>
node.js 学习(二)
查看>>
如何从Apache官网下载windows版apache服务器
查看>>
我的友情链接
查看>>
观察者设计模式
查看>>
对创业的反思-自我定位
查看>>
MySQL之表lock信息
查看>>
Linux基本命令——用户账户管理
查看>>
我的友情链接
查看>>
棋牌游戏服务器架构: 总体设计
查看>>
初识angular体验(二)
查看>>
vSphere 5.5 VM 整合磁盘失败
查看>>
DNS服务器系列之二:高级配置之-DNS子域授权、区域转发、acl列表及view
查看>>
Flex DataGrid 数据的上下移动、增加、删除操作
查看>>