底层实现简单容器

 1 package StudyCollection;
 2
 3 import java.util.Collections;
 4
 5 /**
 6  * 底层实现简单容器
 7  *
 8  * @author ouyang-an 谢谢尚学堂 高琪 老师
 9  */
10
11 public class MakeArray {
12     private Object[] elementData;
13     private int size;
14
15     public MakeArray() { // 无参构造器
16         this(10);
17     }
18
19     public MakeArray(int initialCapacity) { // 带参构造器
20         if (initialCapacity < 0) {
21             try {
22                 throw new Exception();
23             } catch (Exception e) {
24                 e.printStackTrace();
25             }
26
27         }
28         elementData = new Object[initialCapacity];
29     }
30
31     public void add(Object obj) { // add()方法
32         if (size == elementData.length) {
33             Object[] newArray = new Object[size * 2];
34             System.arraycopy(elementData, 0, newArray, 0,
35                     elementData.length);
36             elementData = newArray;
37         }
38         elementData[size] = obj;
39         size++;
40     }
41
42     // size方法
43     public int size() {
44         return size;
45     }
46
47     // 判断数组是否为空
48     public boolean isEmpty() {
49         return size == 0;
50     }
51     //get方法
52     public Object get(int index) {
53         if (index < 0 || index >= size) {
54             try {
55                 throw new Exception();
56             } catch (Exception e) {
57                 e.printStackTrace();
58             }
59         }
60         return elementData[index];
61     }
62     //set方法
63     public Object set(int index) {
64         return elementData[index];
65     }
66     public static void main(String[] args) {
67         MakeArray list = new MakeArray();
68         list.add("a");
69         list.add("123");
70         list.add("sadf");
71         list.add("dsafas");
72         System.out.println(list.size);
73         System.out.println(list.isEmpty());
74         System.out.println(list.get(3));
75     }
76 }
时间: 2024-11-10 01:03:09

底层实现简单容器的相关文章

4.STL简单容器(cghVector)的实现

我用VS2013写的程序(github ),vector版本的代码位于cghSTL/version/cghSTL-0.3.1.rar 我是照着侯捷老师的<STL源码剖析>做的cghSTL,现在才看到第三章,觉得这本书的编排非常适合自学. 第一章讲解空间配置器,这是STL最基础的部件,没什么好说的. 第二章讲解迭代器,老师举了单向链表的例子,这非常有考究,单向链表不需要连续的存储空间,意味着使用单向链表实现的容器不需要考虑空间溢出等问题,我们可以把注意力集中在容器的迭代器上. 第三章讲解序列式容

JAVA简单容器的分类

图中:  常用的容器用紫色粗线框表示:    点线框表示接口,实线框表示普通的(具体的类):   带有空心箭头的点线表示一个特定的类实现了一个接口:    实心箭头表示某个类可以生成箭头所指向类的对象.

javaSE基础之 LinkedList的底层简单实现

这里贴上LinkedList底层的简单实现 package com.yck.mylinkedlist; public class Node { private Node previous; //上一结点 private Object object; //本结点所存储的东西 private Node next; //下一个结点 public Node(){} public Node(Node previous, Object object, Node next) { super(); this.p

2、容器初探

简单容器的分类: 图1. 简单容器的分类 在“图1”中总结出了常用容器的简单关系.可以看到,只有4类容器:List.Set.Queue.Map.上图中虚线框表示一个接口,实线框表示一个具体的实现类,虚线箭头线表示一种“实现”关系,实线箭头线表示一种“继承”关系.红线箭头不表示实现与继承关系. 为了理清楚“图1”中简单容器的关系,首先从迭代器(Iterator)的作用开始讲解. 一.迭代器 迭代器是一个对象,它的工作是遍历并选择容器中的对象,而程序员不必要知道或关心容器的底层实现(无论List.Q

Java 容器

在实际问题中我们经常需要处理数据,单纯依靠数组来存储数据对开发来说非常困难,java提供了一套容器来方便我们编程.对java容器有一个整体的了解对我们来说非常重要,这样在需要特定容器时,不会手忙脚乱,本文主要介绍java的一些基本容器,而不要仅知道使用ArrayList.下面的图片是java中的简单容器分类   --图片来自网络 java定义了四种容器类型,List.Set.Queue和Map. 其中List.Set.Queue都实现了Collection接口,下面来看看这4中类型的容器. Co

【MySQL】容器集群支持数据库实践

京东容器数据库系统,管理1800台物理计算节点,生产1W+ 多MySQL Docker容器实例.架构简单可靠,Docker容器计算平台与MySQL集群管理平台解耦处理.为描述方便,京东容器化数据库系统命名为CDS,底层京东Docker容器计算平台命名为JDOS. 本文重点介绍JDOS如何支持CDS.CDS是更大的话题,后续数据库团队会分享相关实践. 介绍 CDS依赖京东坚实的JDOS技术,生产运行1W+个MySQL容器实例.CDS借助JDOS技术优势获得主要3个方面的技术收益: CDS借助Doc

Spring核心之Ioc容器走读笔记

其实说到Spring的核心,无非指的就是Ioc容器和AOP. Spring降低了应用的负载和框架的侵入性,依靠的解决方案正是Ioc和AOP的支持. 学习Spring的Ioc和Aop的设计模式可以帮助我们在自己编写代码的时候如何优雅的设计和实现. 这里就只记录一下自己对Ioc容器设计和实现的走读和思考. 在查看Spring Ioc容器的设计文档和源代码后,发现其实只有2类主要的容器: 一类是实现BeanFactory接口,这类的容器只实现了基本的方法,从名字上就大概能知道是什么功能:一类是实现Ap

Java&amp;&amp;持有对象(容器小结)

如果一个程序只包含固定数量的且其生命期都是已知的对象,那么这是一个非常简单的程序. -------<Thinking in Java> 通常,程序总是根据运行时才知道的某些条件去创建新对象.对象数量,对象类型尚且不能确定.为了解决这个问题,满足程序员需要在任意时刻和任意位置创建任意数量对象的要求.Java实用类库提供了一套相当完整的容器类来解决这个问题(因为数组受到固定尺寸的左右).其中基本的类型是List,Set,Queue和Map.这些对象类型也称为集合类,但由于java的类库中实用了co

三小时学会Kubernetes:容器编排详细指南

三小时学会Kubernetes:容器编排详细指南 如果谁都可以在三个小时内学会Kubernetes,银行为何要为这么简单的东西付一大笔钱? 如果你心存疑虑,我建议你不妨跟着我试一试!在完成本文的学习后,你就能在Kubernetes集群上运行基于微服务的应用程序.我之所以能保证这一点,是因为我就是这么向客户介绍Kubernetes的. 这份指南与其他文章有何不同之处? 相当多!大多数指南是从Kubernetes概念和kubectl命令这类简单的东西开始的.它们假定读者熟悉应用程序开发.微服务和Do