博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
每日一记--2014.10.11(2)
阅读量:4981 次
发布时间:2019-06-12

本文共 2273 字,大约阅读时间需要 7 分钟。

今天终于进展到了第三章,好好读了读链表

其实对于linkedlist来说,它的remove也会是O(N),因为对于删除这个动作确实是常数时间的,但是对于定位到被删除元素的位置就需要有线性时间的开销了

今天参照书上的把ArrayList类编了编,定名为MyArrayListM

1 package myarraylist;  2   3 import java.util.Iterator;  4 import java.util.NoSuchElementException;  5   6 public class MyArrayListM
implements Iterable
{ 7 private static final int DEFAULT_SIZE=10; 8 private int theSize; 9 private AnyType[] items; 10 11 MyArrayListM(){ 12 theSize=0; 13 ensureCapacity(DEFAULT_SIZE); 14 } 15 public int size(){ 16 return theSize; 17 } 18 public boolean isEmpty(){ 19 return theSize==0; 20 } 21 public void trimToSize(){ 22 ensureCapacity(size()); 23 } 24 public AnyType get(int idx){ 25 if(idx<0|idx>size()) 26 throw new ArrayIndexOutOfBoundsException(); 27 return items[idx]; 28 } 29 public AnyType set(int idx,AnyType element){ 30 if(idx<0|idx>size()) 31 throw new ArrayIndexOutOfBoundsException(); 32 AnyType old = items[idx]; 33 items[idx]=element; 34 return old; 35 } 36 public void add(AnyType element){ 37 add(size(),element); 38 } 39 public void add(int idx,AnyType element){ 40 if(idx<0|idx>size()) 41 throw new ArrayIndexOutOfBoundsException(); 42 if(items.length==size()) 43 ensureCapacity(size()*2); 44 for(int i=size();i>idx;i--){
//改变一下i的取值,可以减少使用一个临时的数组 45 items[i]=items[i-1]; 46 } 47 items[idx]=element; 48 49 theSize++;//嗯嗯,这个忘记了 50 } 51 52 public AnyType remove(int idx){ 53 if(idx<0|idx>size()) 54 throw new ArrayIndexOutOfBoundsException(); 55 AnyType removed =items[idx]; 56 for(int i=idx;i
iterator(){ 75 return new ArrayListIterator(); 76 } 77 private class ArrayListIterator implements Iterator
{
//ArrayListIterator之后不能加
,否则报错 78 int current =0; 79 @Override 80 public boolean hasNext() { 81 return current

 

转载于:https://www.cnblogs.com/ivywenyuan/p/4019519.html

你可能感兴趣的文章
hdu3652(数位dp)
查看>>
webstrom 使用git
查看>>
【agc005d】~K Perm Counting
查看>>
okhttp实现断点上传
查看>>
微信小程序之上拉加载更多
查看>>
工艺轴配置-编码器参数设置
查看>>
【转】你可能不知道的Shell
查看>>
char varchar nchar nvarcharar到底有多大区别
查看>>
livecd环境下chroot修复系统
查看>>
[luogu2272 ZJOI2007] 最大半连通子图 (tarjan缩点 拓扑排序 dp)
查看>>
java⑿
查看>>
MVC3项目发布
查看>>
Android 属性动画(Property Animation) 完全解析 (下)
查看>>
数字图像处理-空间域处理-灰度变换-基本灰度变换函数(反转变换、对数变换、伽马变换和分段线性变换)...
查看>>
MySQL主从复制与读写分离
查看>>
arp -s 添加失败:拒绝访问
查看>>
抽象类与接口的区别
查看>>
mysql禁止远程访问
查看>>
LoadRunner 和QTP的区别
查看>>
latex 字体大小设置
查看>>