自制数据结构(容器)-java开发用的最多的ArrayList和HashMap


public class MyArrayList<E> {
		    private int capacity = 10;
		    private int size = 0;
		    private E[] values = null;  

		    @SuppressWarnings("unchecked")
		    public MyArrayList() {
		        values = (E[]) new Object[capacity];
		    }  

		    @SuppressWarnings("unchecked")
		    public MyArrayList(int capacity) {
		        this.capacity = capacity;
		        values = (E[]) new Object[this.capacity];
		    }  

		    public void put(E e) {
		        if (e == null) {
		            throw new RuntimeException("The value should not be null.");
		        }
		        if (size >= capacity) {
		            enlargeCapacity();
		        }
		        values[size] = e;
		        size++;
		    }  

		    public E get(int index) {
		        if (index >= size) {
		            throw new RuntimeException("The index:" + index + " is out of band.");
		        }
		        return values[index];
		    }  

		    public void remove(int index) {
		        if (index >= size) {
		            throw new RuntimeException("The index:" + index + " is out of band.");
		        }
		        for (int i = index; i < size - 1; i++) {
		            values[i] = values[i + 1];
		        }
		        values[size - 1] = null;
		        size--;
		    }  

		    @SuppressWarnings("unchecked")
		    private void enlargeCapacity() {
		        capacity = capacity * 2;
		        E[] tmpValues = (E[]) new Object[capacity];
		        System.arraycopy(values, 0, tmpValues, 0, size);
		        values = tmpValues;
		    }  

		    public String toString() {
		        StringBuilder sb = new StringBuilder();
		        sb.append("[");
		        for (int i = 0; i < size; i++) {
		            sb.append(values[i]).append(",");
		        }
		        if (size > 0) {
		            sb.deleteCharAt(sb.length() - 1);
		        }
		        sb.append("]");
		        return sb.toString();
		    }
		    /**
		     * @param args
		     */
		    public static void main(String[] args) {
		        MyArrayList<Integer> myList = new MyArrayList<Integer>();
		        for(int i=0;i<1000;i++){
		        	myList.put(i);
		        }
		        System.out.println(myList.toString());
		    }  

	}

  

时间: 2024-11-04 10:24:37

自制数据结构(容器)-java开发用的最多的ArrayList和HashMap的相关文章

java常用集合类:Deque,ArrayList,HashMap,HashSet

Queue家族 无论是queue还是stack,现在常用的是Deque的实现类:如单线程的ArrayQueue,多线程的ArrayBlockingQueue Deque:读作“deck”,算是一种“双端队列”,即支持头部和尾部的数据访问和增删.----支持stack和queue的操作 关系:ArrayDeque --> Deque(I) -> Queue(I) -> Collection(I),其中->表示继承,-->表示实现,(I)表示接口. 关系:Stack ->

Java开发工具

每一个程序员都有一个自己的开发工具,使用得心应手,好的工具能做到事半功倍效果.但人与人不同,喜好不同,使用的工具也不同.就像侠客需要武器,十八般兵器,各有所长,每个侠客都有属于自己的兵器.下面介绍下IT界的兵器们: JDK (Java Development Kit)Java开发工具集 .Eclipse.MyEclipse.UltraEdit.Java Workshop.NetBeans 与Sun Java Studio 5.Borland 的JBuilder.Oracle 的JDevelope

Java开发中用的比较多的数据结构

java 中几种常用数据结构 2016年07月11日 09:11:27 阅读数:83211 标签: 数据结构java 更多 个人分类: 自行学习 JAVA中常用的数据结构(java.util. 中) java中有几种常用的数据结构,主要分为Collection和map两个主要接口(接口只提供方法,并不提供实现),而程序中最终使用的数据结构是继承自这些接口的数据结构类.其主要的关系(继承关系)有:  (----详细参见java api文档!) Collection---->Collections

java开发总体知识复习

[Java面经]干货整理, Java面试题(覆盖Java基础,Java高级,JavaEE,数据库,设计模式等) 上一篇发了一个找工作的面经, 找工作不宜, 希望这一篇的内容能够帮助到大家.对于这次跳槽找工作, 我准备了挺长的时间, 其中也收集了很多比较好的笔试面试题, 大都是一些常用的基础, 很多都是由于时间原因没有来得及给出答案, 但是题目大都是比较经典实用的, 现在都放到这里, 希望对正处于找工作的博友有一定的帮助. 第一部分: Java基础(此部分面试题题目来自:http://www.ho

使用Java开发高性能网站需要关注的那些事儿

无论大型门户网站还是中小型垂直类型网站都会对稳定性.性能和可伸缩性有所追求.大型网站的技术经验分享值得我们去学习和借用,但落实到更具体的实践上并不是对所有网站可以适用,其他语言开发的网站我还不敢多说,但Java开发的系统,我还是能您给插上几句话: JVMJEE容器中运行的JVM参数配置参数的正确使用直接关系到整个系统的性能和处理能力,JVM的调优主要是对内存管理方面的调优,优化的方向分为以下4点:1.HeapSize             堆的大小,也可以说Java虚拟机使用内存的策略,这点是

Alibaba Java开发手册索引规约学习笔记

最近一段时间再看阿里巴巴 Java开发手册索引规约,写篇帖子总结一下,索引规约内容如下 索引规约1. [强制]业务上具有唯一特性的字段,即使是多个字段的组合,也必须建成唯一索引. 说明: 不要以为唯一索引影响了 insert 速度,这个速度损耗可以忽略,但提高查找速度是明显的: 另外,即使在应用层做了非常完善的校验控制,只要没有唯一索引,根据墨菲定律,必然有脏数据产生. 2. [强制]超过三个表禁止 join.需要 join 的字段,数据类型必须绝对一致: 多表关联查询时,保证被关联的字段需要有

java开发中如何选择Set、List、Map、数组

---我不生产代码,我只是代码的搬运工. 在JAVA的util包中有两个所有集合的父接口Collection和Map,它们的父子关系: java.util +Collection 这个接口extends自 --java.lang.Iterable接口 +List 接口 -ArrayList 类 -LinkedList 类 -Vector 类     此类是实现同步的 +Queue 接口 +不常用,在此不表. +Set 接口 +SortedSet 接口 -TreeSet 类 -HashSet +M

阿里巴巴Java开发手册1.4.0

转自官网 前言 <阿里巴巴Java开发手册>是阿里巴巴集团技术团队的集体智慧结晶和经验总结,经历了多次大规模一线实战的检验及不断完善,系统化地整理成册,回馈给广大开发者.现代软件行业的高速发展对开发者的综合素质要求越来越高,因为不仅是编程知识点,其它维度的知识点也会影响到软件的最终交付质量.比如:数据库的表结构和索引设计缺陷可能带来软件上的架构缺陷或性能风险:工程结构混乱导致后续维护艰难:没有鉴权的漏洞代码易被黑客攻击等等.所以本手册以Java开发者为中心视角,划分为编程规约.异常日志.单元测

阿里巴巴 Java 开发手册 1.4.0

一.编程规约(一) 命名风格1. [强制]代码中的命名均不能以下划线或美元符号开始,也不能以下划线或美元符号结束.反例: _name / __name / $name / name_ / name$ / name__2. [强制]代码中的命名严禁使用拼音与英文混合的方式,更不允许直接使用中文的方式.说明:正确的英文拼写和语法可以让阅读者易于理解,避免歧义.注意,即使纯拼音命名方式也要避免采用.正例: alibaba / taobao / youku / hangzhou 等国际通用的名称,可视同