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(); 判断是否包含 ...
随机推荐
- Gravitational Teleport简单使用
使用官方提供的二进制包进行快速启动测试,详细细节还需要在学习 下载软件包 mac 系统 https://gravitational.com/teleport/download/ wget https: ...
- 曾经很强大的免费 ERP 2BizBox
曾经很强大的免费 ERP 2BizBox 整个功能很强大,特别是生产,工单也很完善,有损耗,有反冲等功能. 流程比较规矩,需要先采购后才能使用,只有生产后才能销售,工单有组装和拆装,工程有工程更改,也 ...
- node nightmare 网页自动化测试 sample
安装nightmare 编写1.js 运行 node 1.js var Nightmare = require('nightmare');var nightmare = Nightmare({ sho ...
- 新版vue-cli输入本地ip不能访问,只能用localhost才可以访问?
问:新版vue-cli输入本地ip不能访问,只能用localhost才可以访问? 答:修改config/index.js配置,将host: 'localhost',改为host: '0.0.0.0', ...
- css3中的BFC,IFC,GFC和FFC
出处:https://www.jianshu.com/p/e75f351e11f8 表格比较: 名称 英文全称 含义 BFC Block Formatting Contexts 块级格式化上下文 IF ...
- golang 自定义json解析
在实际开发中,经常会遇到需要定制json编解码的情况. 比如,按照指定的格式输出json字符串, 又比如,根据条件决定是否在最后的json字符串中显示或者不显示某些字段. 如果希望自己定义对象的编码和 ...
- 性能优化之永恒之道(实时sql优化vs业务字段冗余vs离线计算)
在项目中,随着时间的推移,数据量越来越大,程序的某些功能性能也可能会随之下降,那么此时我们不得不需要对之前的功能进行性能优化.如果优化方案不得当,或者说不优雅,那可能将对整个系统产生不可逆的严重影响. ...
- 4G模块luci的配置及重连脚本
一.4G Luci配置 1. 新建一个wwan接口: 2. 上网方式为dhcp自动获取: 3. 物理设置选择wwan0: 4. 防火墙选择wan 二.重连脚本redial4g LogFile=/roo ...
- 关于sdk>=23的android版本权限的问题
在SDK23也就是Android6.0.1里编写调用系统通讯录读写权限的程序,在AndroidManifest.xml中,已经配置了 <uses-permission android:name= ...
- windows 日志,IIS应用程序池回收日志
应用程序池回收日志筛选事件ID:5074 进程被关闭:5186