ArrayList的简单实现
class AList<E>{
//属性:数组和实际元素个数
private Object[] data;
private int size;
//构造函数:有参、无参
public AList(int x){
if(x<0)
System.out.println("集合初始化异常,不正常的初始值");
else
data=new Object[x];
}
public AList(){
this(10);
}
//size方法:返回实际元素个数
public int size(){
return size;
}
//add方法:添加元素,先判断数组空间是否满了,满->扩容,再添加
public void add(E newData){
if(size==data.length)
data=Arrays.copyOf(data,size + (size >> 1));
data[size++]=newData;
}
//get方法:获取指定位置的元素,先对下表进行校验
public Object get(int index){
if(index<0 || index>size-1)
System.out.println("输入的下标不准确,请重新输入!");
return data[index];
}
//remove方法:传下标,先判断下标是否越界
public void remove(int index){
if(index<0 || index>size-1)
System.out.println("输入的下标不准确,请重新输入!");
System.arraycopy(data,index+1,data,index,(size--) -(index+1));
}
//remove方法:传下标,先判断下标是否越界,对数组进行循环遍历,用equals判断
public void remove(Object obj){
if(obj==null)
System.out.println("删除失败,传入元素不能为空");
else{
for(int i=0;i<size;i++){
if(obj.equals(data[i])){
remove(i);
}
}
}
}
//contains方法:判断数组中是否含有传入的参数
public boolean contains(Object obj){
for(int i=0;i<size;i++){
if(obj.equals(data[i]))
return true;
}
return false;
}
@Override
public String toString(){
StringBuffer str=new StringBuffer("[");
for(int i=0;i<size;i++){
if(i!=(size-1))
str.append(data[i]).append(",");
else
str.append(data[i]);
}
return str+"]";
}
}
ArrayList的简单实现的更多相关文章
- C#中数组与ArrayList的简单使用
1. 多维数组 2. 锯齿数组 3. 数组的常用操作 4. ArrayList 1. 多维数组 多维数组:行数和列数在定义时已确定 string[,] arr = new string[2, 3]; ...
- ArrayList 集合 简单运用
集合 遍历 import java.util.ArrayList; class Demo02 { public static void main(String[] args) { // 创建Arra ...
- javaSE基础之 ArrayList的底层简单实现
最近就是想扒一扒存在硬盘里面的学习资料(突然想到什么),把以前写过的一些东西整理一下分享出来. 这边是ArrayList 的简单实现,当然只实现了部分方法 package com.yck.collec ...
- 简单实现 ArrayList
java中提供了多个集合框架 其中就有ArrayList 下面简单的实现一下 只写了添加,获取长度和根据下标获取元素的方法 public class MyArrayList { //定义一个obje ...
- java 遍历arrayList的四种方法
package com.test; import java.util.ArrayList;import java.util.Iterator;import java.util.List; public ...
- ArrayList的使用方法(转载)
转载自: http://i.yesky.com/bbs/jsp/view.jsp?articleID=889992&forumID=150 1.什么是ArrayList ArrayLis ...
- ArrayList
各种原因,前两年做C语言去了,现在重新做JAVA, 感觉自己基础很不扎实,要好好学习啦, 先从简单的开始~ 以下内容基于jdk1.7.0_79源码: 什么是ArrayList 可以简单的认为是一个动态 ...
- Java Socket发送与接收HTTP消息简单实现
在上次Java Socket现实简单的HTTP服务我 们实现了简单的HTTP服务,它可以用来模拟HTTP服务,用它可以截获HTTP请求的原始码流,让我们很清楚的了解到我们向服务发的HTTP消息的结 构 ...
- Java基础(44):ArrayList使用详解
1.什么是ArrayList ArrayList就是传说中的动态数组,用MSDN中的说法,就是Array的复杂版本,它提供了如下一些好处: a.动态的增加和减少元素 b.实现了IColle ...
随机推荐
- HBase与Zookeeper的关系
HBase与Zookeeper的关系 一.HBase与Zookeeper的关系 Zookeeper Client Master RegionServer 一.HBase与Zookeeper的关系 Cl ...
- 11月份 chrome 标签整理
Spring MVC框架相关 Java Web开发 和 linux下开发 汇总 项目源码 优秀的音视频开源框架 常用软件的下载 学习资源或网站 最后分享一些以前收藏的优秀博客 这两天经过3次面试,很幸 ...
- python ---线程,进程,协程
本章内容 线程 进程 协程 线程是最小的调度单位 进程是最小的管理单元 线程 多线程的特点: 线程的并发是利用cpu上下文切换 多线程的执行的顺序是无序的 多线程共享全局变量 线程是继承在进程里的,没 ...
- 6. Linux输入输出重定向
1.输入重定向是指把文件导入到命令中,而输出重定向则是指把原本要输出到屏幕的数据信息写入到指定文件中. 输入重定向中用到的符号及其作用 输出重定向中用到的符号及其作用 1)通过输出重定向将原本要输出到 ...
- dedecms织梦的安全问题解决办法
很多新手用户在使用织梦CMS程序过程中,难免会碰到挂马中毒现象,所以事先我们要对网站及服务器安全做好预防备份处理. 织梦作为国内第一大开源免费CMS程序,无疑是很多HACK研究的对象,在本身不安全的互 ...
- pandas中的遍历方式速度对比
对一个20667行的xlsx文件进行遍历测试 import pandas as pd # 定义一个计算执行时间的函数作装饰器,传入参数为装饰的函数或方法 def print_execute_time( ...
- Java创建线程四种方式
1.继承Thread类 public class MyThread extends Thread { public MyThread() { } public void run() { for(int ...
- [WPF 学习] 18. 摄像头(肢解DirectShow)
公司的产品需要人脸比对,摄像头相关的需求如下(突然发现除了英文不太好外,实际上中文也不太好,所以直接上一个接口) using System; using System.Drawing; using S ...
- Codeforces Round #626 (Div. 2) B. Count Subrectangles
题目连接:https://codeforces.com/contest/1323/problem/B 题意:给一个大小为n的a数组,一个大小为m的b数组,c数组是二维数组c[i][j]=a[i]*b[ ...
- UVA-257 哈希算法
UVA-257 题意: 给你很多串,你需要找到这个串内有没有两个长度大于3的回文字符串,且要保证这两个回文字符串不相同,也不能完全覆盖,但可以重合一部分 题解: 首先判断回文的话可以通过马拉车算法(M ...