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 ...
随机推荐
- MariaDB数据库---主从复制,galera架构
主从复制 补充一点:⑤slave端的IO thread 将从master端请求来的二进制日志文件中的内容存储到relay_log(中继日志)中 图片来源:https://www.cnblogs.com ...
- Hive创建HBase,ES外部表
1.创建HBase外部表 CREATE EXTERNAL TABLE `ods_women`( `rowkey` string COMMENT 'from deserializer', `articl ...
- 2020牛客暑期多校训练营(第四场) C - Count New String (字符串,广义后缀自动机,序列自动机)
Count New String 题意: 定义字符串函数 \(f(S,x,y)(1\le x\le y\le n)\),返回一个长度为y-x+1的字符串,第 i 位是 \(max_{i=x...x+k ...
- C. New Year Book Reading
New Year is coming, and Jaehyun decided to read many books during 2015, unlike this year. He has n b ...
- Codeforces Round #613 (Div. 2) B. Just Eat It! (DP)
题意:有一个长度为\(n\)的序列,找出最大的长度不为\(n\)的子段和,问最大子段和是否小于所有元素和. 题解:最大子段和我们可以直接用dp来找,每次状态转移为:\(dp[i]=max(dp[i-1 ...
- Springboot 过滤器和拦截器详解及使用场景
一.过滤器和拦截器的区别 1.过滤器和拦截器触发时机不一样,过滤器是在请求进入容器后,但请求进入servlet之前进行预处理的.请求结束返回也是,是在servlet处理完后,返回给前端之前. 2.拦截 ...
- Lightoj 1038 - Race to 1 Again【期望+dp】
题目:戳这里 题意:一个数字n不断迭代地除以自身的因子得到1.求这个过程中操作除法次数的期望. 解题思路: 求概率基本都是从一个最基础的状态开始延伸推出公式,得出答案.因为每个数都有个共同的最终状态1 ...
- leetcode 4 寻找两个有序数组的中位数 二分法&INT_MAX
小知识 INT_MIN在标准头文件limits.h中定义. #define INT_MAX 2147483647#define INT_MIN (-INT_MAX - 1) 题解思路 其实是类似的二分 ...
- 操作系统 part4
1.操作系统的启动 CPU加电后,执行BIOS(基本IO处理系统).BIOS会进行硬件的自检和初始化,然后把加载程序(BootLoader)从磁盘上的引导扇区中加载到指定位置0x7c00.然后控制权交 ...
- springboot使用RestTemplate+httpclient连接池发送http消息
简介 RestTemplate是spring支持的一个请求http rest服务的模板对象,性质上有点像jdbcTemplate RestTemplate底层还是使用的httpclient(org.a ...