1.  
  2. public class MyArrayList<E> {
  3. private int capacity = 10;
  4. private int size = 0;
  5. private E[] values = null;
  6.  
  7. @SuppressWarnings("unchecked")
  8. public MyArrayList() {
  9. values = (E[]) new Object[capacity];
  10. }
  11.  
  12. @SuppressWarnings("unchecked")
  13. public MyArrayList(int capacity) {
  14. this.capacity = capacity;
  15. values = (E[]) new Object[this.capacity];
  16. }
  17.  
  18. public void put(E e) {
  19. if (e == null) {
  20. throw new RuntimeException("The value should not be null.");
  21. }
  22. if (size >= capacity) {
  23. enlargeCapacity();
  24. }
  25. values[size] = e;
  26. size++;
  27. }
  28.  
  29. public E get(int index) {
  30. if (index >= size) {
  31. throw new RuntimeException("The index:" + index + " is out of band.");
  32. }
  33. return values[index];
  34. }
  35.  
  36. public void remove(int index) {
  37. if (index >= size) {
  38. throw new RuntimeException("The index:" + index + " is out of band.");
  39. }
  40. for (int i = index; i < size - 1; i++) {
  41. values[i] = values[i + 1];
  42. }
  43. values[size - 1] = null;
  44. size--;
  45. }
  46.  
  47. @SuppressWarnings("unchecked")
  48. private void enlargeCapacity() {
  49. capacity = capacity * 2;
  50. E[] tmpValues = (E[]) new Object[capacity];
  51. System.arraycopy(values, 0, tmpValues, 0, size);
  52. values = tmpValues;
  53. }
  54.  
  55. public String toString() {
  56. StringBuilder sb = new StringBuilder();
  57. sb.append("[");
  58. for (int i = 0; i < size; i++) {
  59. sb.append(values[i]).append(",");
  60. }
  61. if (size > 0) {
  62. sb.deleteCharAt(sb.length() - 1);
  63. }
  64. sb.append("]");
  65. return sb.toString();
  66. }
  67. /**
  68. * @param args
  69. */
  70. public static void main(String[] args) {
  71. MyArrayList<Integer> myList = new MyArrayList<Integer>();
  72. for(int i=0;i<1000;i++){
  73. myList.put(i);
  74. }
  75. System.out.println(myList.toString());
  76. }
  77.  
  78. }

  

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

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

    图一:java collection 类图 Queue家族 无论是queue还是stack,现在常用的是Deque的实现类:如单线程的ArrayQueue,多线程的ArrayBlockingQueue ...

  2. java开发工具比较(16个工具修订版)

    1.JDK (Java Development Kit)Java开发工具集 SUN的Java不仅提了一个丰富的语言和运行环境,而且还提了一个免费的Java开发工具集(JDK).开发人员和最终用户可以利 ...

  3. Java开发笔记(序)章节目录

    现将本博客的Java学习文章整理成以下笔记目录,方便查阅. 第一章 初识JavaJava开发笔记(一)第一个Java程序Java开发笔记(二)Java工程的帝国区划Java开发笔记(三)Java帝国的 ...

  4. Java开发工具全面比较

    1.JDK (Java Development Kit)Java开发工具集 从初学者角度来看Java开发工具,采用JDK开发Java程序能够很快理解程序中各部分代码之间的关系,有利于理解Java面向对 ...

  5. Java开发笔记(七十一)容器工具Collections

    清单作为一组数据的有序队列,它在组织形式上与数组有着某些异曲同工之处,数组有专门的数组工具Arrays来进行加工操作,照理清单也应该配备对应的清单工具.当然容器这个大家族确实拥有自己的容器工具Coll ...

  6. 20172301 2017-2018-2 《程序设计与数据结构》实验一《Java开发环境的熟悉》实验报告

    20172301 2017-2018-2 <程序设计与数据结构>实验一<Java开发环境的熟悉>实验报告 课程:<程序设计与数据结构> 班级: 1723 姓名: 郭 ...

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

    java 中几种常用数据结构 2016年07月11日 09:11:27 阅读数:83211 标签: 数据结构java 更多 个人分类: 自行学习   JAVA中常用的数据结构(java.util. 中 ...

  8. 阿里JAVA开发手册零度的思考理解(二)

    转载请注明原创出处,谢谢! 说在前面 人生的大道上默默地走,就必须要有一盏灯亮着为你引导方向!而这盏灯抑或只是一句话,一句鼓励,一个赞美,一次承认,一次认可,一次相识一次交流-- 上篇文章:阿里JAV ...

  9. 知名互联网公司校招 Java 开发岗面试知识点解析

    天之道,损有余而补不足,是故虚胜实,不足胜有余. 本文作者在一年之内参加过多场面试,应聘岗位均为 Java 开发方向.在不断的面试中,分类总结了 Java 开发岗位面试中的一些知识点. 主要包括以下几 ...

随机推荐

  1. 基因家族收缩和扩张分析 & Selective loss pathway & 泛基因组

    套路 这通常就是基因组组装后的必做分析,通过比较基因组学的手段进行分析,可以知道所研究物种在进化过程中哪些核心基因家族发生了变化,从而导致了其特殊的适应性机制的形成. 参考: Extremotoler ...

  2. 【转】ArcGIS API for Silverlight/WPF 2.1学习笔记(五)

    2.Find示例代码 (1)xaml文件: //添加Symbol命名空间 xmlns:esriSymbols="clr-namespace:ESRI.ArcGIS.Client.Symbol ...

  3. 1月5日 对象Object, 含过去看的英文档的总结链接

    Object 也是一种数据类型,可以有属性,有method. 反之,在Ruby中,每一种数据类型都是Object.如String,Integer,Float,Array,Hash. IN Ruby e ...

  4. 3 python 基本数据类型

    1.python的基本数据类型 1.字符串 不可变数据类型 2.int //整除 %取余 bit_length() print(a.bit_length()) #打印某个数字类型的二进制长度 3.bo ...

  5. km板子(二分图最大权匹配)

    //#pragma comment(linker, "/stack:200000000") //#pragma GCC optimize("Ofast,no-stack- ...

  6. GDI+ DrawString字间距问题

    ///   <summary> ///   绘制任意间距文字 /// </summary> ///   <param   name= "text "& ...

  7. OAF多语言的实现

    在之前的文章中转载了一篇关于多语言实现的文章. OAF中多语言的实现(转) 现在我来讲讲另外一种情况. 在建立工程项目没有特别选择语言,所以所有的PG或RN页面都是英文的,在页面原文件中可看到如下内容 ...

  8. java连接MySql数据库 zeroDateTimeBehavior

    JAVA连接MySQL数据库,在操作值为0的timestamp类型时不能正确的处理,而是默认抛出一个异常, 就是所见的:java.sql.SQLException: Cannot convert va ...

  9. 78. Subsets 90. Subsets II

    1. Given a set of distinct integers, nums, return all possible subsets. Note: Elements in a subset m ...

  10. Sublime text3配置xdebug调试记录

    第一次配置遇到的问题记录: 问题:配置php.ini的时候xdebug.remote_port = 9001刚开始我一直配置9000端口冲突,然后一切弄好了访问浏览器就一直在转圈无法访问: 现在开始配 ...