1-自己动手编写ArrayList集合
学习集合的原理,这是一个很简单的代码,没有索引下标越界判断,异常处理等,不够健壮,后面会继续更新完善代码.....
只是入门学习一下
package my; /***
* 自己动手编写一个ArrayList类
* @author 刘诗华
*
*/
public class ArrayList { //集合默认初始化长度为10个元素
private final static int DEFAULT_CAPACITY = 10; //当前集合中存储了多少个元素
private int size=0; //存储对象容器
private Object[] ele=null; //无参数构造器
public ArrayList()
{
this(DEFAULT_CAPACITY);
}
//带参数构造器
public ArrayList(int initialCapacity)
{
ele=new Object[initialCapacity];
} //添加元素
public void add(Object e)
{
ele[size]=e;
size++;
} //获取指定索引元素
public Object get(int index)
{
return ele[index];
} //获取元素第一次在集合出现的索引位置
public int indexOf(Object o)
{
for(int index=0;index<size;index++)
{
if(o.equals(ele[index]))
return index;
}
return -1;
} //查询元素最后一次出现的索引
public int lastIndexOf(Object o)
{
int len=size-1;
for(int index=len;index!=-1;index--)
{
if(o.equals(ele[index]))
return index;
}
return -1;
} //替换元素
public void set(int index, Object element)
{
ele[index]=element;
} //返回集合存储元素长度
public int size()
{
return this.size;
} //判断是否为空集合
public boolean isEmpty()
{
return size == 0;
} //清空集合所有元素
public void clear()
{
ele=new Object[DEFAULT_CAPACITY];
size=0;
} //判断集合是否包含某个元素
public boolean contains(Object o)
{
int len=size-1;
for(int index=len;index != -1; index--)
{
if(o.equals(ele[index]))
return true;
}
return false;
} //删除某个元素
public void remove(Object o)
{
int index=this.indexOf(o); for(int i=index;index<=size-1;index++)
{
ele[index]=ele[index+1];
ele[index+1]=null;
size--;
}
} //删除指定索引位置的元素
public void remove(int index)
{
for(int i=index;index<=size-1;index++)
{
ele[index]=ele[index+1];
ele[index+1]=null;
size--;
}
} @Override
public String toString() { if(ele == null)
return "null"; if(size ==0)
return "[]"; StringBuilder sb=new StringBuilder();
sb.append("[");
for(int index=0;index<size;index++)
{
sb.append(ele[index]);
if(index != size-1)
sb.append(",");
}
sb.append("]");
return sb.toString();
} }
1-自己动手编写ArrayList集合的更多相关文章
- Java集合 -- ArrayList集合及应用
JAVA集合 对象数组 集合类之ArrayList 学生管理系统 斗地主案例 NO.one 对象数组 1.1 对象数组描述 A:基本类型的数组:存储的元素为基本类型 int[] arr={1,2,3, ...
- 【代码笔记】Java常识性基础补充(二)——数组、ArrayList集合、ASCII编码、 eclipse基础操作、eclipse调试、eclipse项目导入、eclipse快捷键
1.0 如何定义数组以及访问数组中的元素,如下所示.ArrayDemo01.java public class ArrayDemo01 { public static void main(String ...
- Java基础语法(自定义类、ArrayList集合)
Java基础语法 今日内容介绍 u 自定义类 u ArrayList集合 第1章 引用数据类型(类) 1.1 引用数据类型分类 提到引用数据类型(类),其实我们对它并不陌生,如使用过的Scanner类 ...
- Java 之 ArrayList 集合
一.ArrayList 概述 java.util.ArrayList 是 大小可变的数组 的实现,存储在内的数据称为元素.该类是一个 集合类(容器),可以让我们更便捷的存储和操作对象数据. 该类可以 ...
- java基础: ArrayList集合应用, ArrayList增删改查详解,综合java基础实现学生管理系统,
1.ArrayList 集合和数组的区别 : 共同点:都是存储数据的容器 不同点:数组的容量是固定的,集合的容量是可变的 1.1 -ArrayList的构造方法和添加方法 public ArrayLi ...
- 设计模式(十七)——迭代器模式(ArrayList 集合应用源码分析)
1 看一个具体的需求 编写程序展示一个学校院系结构:需求是这样,要在一个页面中展示出学校的院系组成,一个学校有多个学院, 一个学院有多个系.如图: 2 传统的设计方案(类图) 3 传统的方式的问题分析 ...
- C#语言基础——集合(ArrayList集合)
集合及特殊集合 集合的基本信息: System.Collections 命名空间包含接口和类,这些接口和类定义各种对象(如列表.队列.位数组.哈希表和字典)的集合.System.Collections ...
- OWIN系列之自己动手编写中间件
一.前言 1.基于OWIN的项目摆脱System.Web束缚脱颖而出,轻量级+跨平台,使得ASP.NET应用程序只需依赖这个抽象接口,不用关心所运行的Web服务器. 2.OWIN.dll介绍 使用反编 ...
- ArrayList集合 、特殊集合
一.ArrayList集合 集合内可以放不同类型的元素 另:object类型为所有数据类型的基类 添加元素:.add(); 清空集合:al.clear(); 克隆集合:.clone(); 判断是否包含 ...
随机推荐
- day5 python学习
本日主要讲了列表的一些操作 1.列表的增 ret=['wang','taibai','alxe','ritian'] ret.append("wusir") print(ret) ...
- codeblock设置快捷键
第一步: 第二步: 第三步: 格式化代码设置: 在代码框里点右键,按Format use Astyle就会自动代码格式化了 但是它默认的风格是大括号另起一行,很不习惯,实际上是可以改的 1.Sett ...
- 程序设计实践 (Brian W. Kernighan Rob Pike 著)
第1章 风格 1.1 名字 1.2 表达式和语句 1.3 一致性和习惯用法 1.4 函数宏 1.5 神秘的数 1.6 注释 1.7 为何如此费心 第2章 算法与数据结构 2.1 检索 2.2 排序 2 ...
- Mysql5.6 自动化部署
主机环境:Centos6.5 前提: 1. 配置yum源 2. 移除系统自带的mysql 3. 删除原先的mysql用户 4. 使用mysql二进制安装包:https://dev.mysql.com/ ...
- navicat外键设置
https://blog.csdn.net/qq_32486599/article/details/73497810
- Jmeter关于断言
本文摘自:一颗糖果 https://www.cnblogs.com/linglingyuese/p/linglingyuese-five.html 1.断言持续时间(Duration to Ass ...
- Zookeeper watcher机制
一.watcher机制 1.针对每个节点的操作,都会有一个监督者-> watcher 2.当监控的某个对象(znode)发生了变化,则触发watcher事件 3.zk中的watcher是一次性的 ...
- SourceInsight宏插件1(非常好用,强力推荐)
对于一直使用sourceinsight编辑C/C++代码的工程师们,sourceinsight是一个非常好用的编辑工具可以任意定位,跳转,回退,本人一直使用该工具做C/C++开发,sourceinsi ...
- 【java】for循环嵌套
循环嵌套:外循环控制行数,内循环控制每一行的列数,也就是每一行的元素个数 需求:打印出9*9的乘法表 class Demo { public static void main(String[] arg ...
- 分布式超级账本Hyperledger里zookeeper的作用
Zookeeper是一种在分布式系统中被广泛用来作为:分布式状态管理.分布式协调管理.分布式配置管理.和分布式锁服务的集群.kafka增加和减少服务器都会在Zookeeper节点上触发相应的事件kaf ...