问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

利用数组实现Java ArrayList类的基本功能,要求实现方法包括: Add, Insert, Delete, Find 编写一个测试应

发布网友 发布时间:2022-05-05 03:35

我来回答

4个回答

热心网友 时间:2023-10-09 12:14

提供给你思路,这里我只做往数组里加int数字,其实可以做泛型的,如果你想深研究自己去看JDK源码。 我这里只是简单的做数组之间的复制。代码略长:不懂追问!

public class MyList {
private int size;
Object[] object = null;
Object[] temp;
int sequence = 0;

public MyList() {
this(1);
}

public MyList(int size) {
if (size <= 0) {
throw new IllegalArgumentException("长度应大于0");
} else {
this.size = size;
this.object = new Object[this.size];
}
}

// Add, Insert, Delete, Find
public void add(Object obj) {
if (obj == null) {
throw new IllegalArgumentException("添加的对象不应为null");
} else {
if (sequence >= size) {
this.size++;// 这里扩展空间方式随意,可以每次扩展两倍
temp = new Object[this.size];
System.arraycopy(object, 0, temp, 0, object.length);
object = temp;
temp = null;
}
object[sequence] = obj;
sequence++;
}

}
public void insert(int index, Object obj) {
if (index < 0 || obj == null) {
throw new IllegalArgumentException("插入的索引值应不小于0,并且插入的对象不应为null");
} else {
if (index == object.length) {
add(obj);
} else if (index > object.length) {
throw new IllegalArgumentException("数据越界,插入的索引不应不在数组范围内");
}
if (sequence >= size) {
this.size++;
}
temp = new Object[this.size];
System.arraycopy(object, 0, temp, 0, index);//[1,2,3]
temp[index] = obj;
System.arraycopy(object, index, temp, index+1, object.length-index);
object = temp;
temp = null;
sequence++;
}

}
public void delete(int index) {
if (index < 0 || index>this.size) {
throw new IllegalArgumentException("索引应在数组范围内");
} else {
temp = new Object[--this.size];
System.arraycopy(object, 0, temp, 0, index);
System.arraycopy(object, index+1, temp, index, object.length-1-index);
object = temp;
temp = null;
sequence--;
}
}

public Object find(int index) {
if (index < 0 || index > this.size) {
throw new IllegalArgumentException("索引应大于0或不大于集合元素数");
} else {
return object[index];
}
}

public int size() {
return this.size;
}

}

热心网友 时间:2023-10-09 12:14

数组是固定长度的,你学过数据结构的话也就知道,不便于插入和删除,如果你要去实现的话,add方法和Insert方法呢就需要向后移动数据,Delete方法向前移动,Fing方法的话就需要一个equals方法去对比查询。如果你不想去移动的话,也可以建立一个临时数组,相当于一个中转站一样。。。

热心网友 时间:2023-10-09 12:15

import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.JTextField;
import javax.swing.border.TitledBorder;

public class ttt {

int arry[];
int temp[];
public ttt()
{
arry = new int[0];
}
public void add(int x)
{
temp = arry;
arry = new int[arry.length + 1];

for (int i = 0; i < temp.length; i++) {
arry[i] = temp[i];
}
arry[arry.length-1] = x;
}

public void delete(int x)
{
temp = arry;
if(arry.length > 1)
arry = new int[arry.length - 1];
else
return;
for (int i = 0,j=0; i < temp.length; i++) {
if(temp[i] == x)
continue;
else{
arry[j] = temp[i];
j++;
}

}
}

public static void main(String[] args) {

ttt t = new ttt();
t.add(2);
t.add(3);
t.delete(2);
System.out.println(t.arry[0]);
}
}

热心网友 时间:2023-10-09 12:15

这个好像有困难,list长度不固定,但是数组长度是要固定的,所以add和insert不好弄,除非你定义一个很长的数组
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
win7窗口淡入淡出慢 iPhone 小技巧:如何将 Safari 浏览器中的网页添加到桌面? 锰粉是什么颜色的金属 铁精粉的常见颜色是什么 烟花爆竹中的金属粉末如何使其呈现绚丽色彩? 金粉有哪些种类 灰土每层回填最大厚度 灰土基础简史 如何让一个喜欢你的女孩讨厌你! 西环里新区基本资料 Java中如何编写一个方法传入集合 遍历集合后 并将里面的单词insert出来 蝉翼的幕后花絮 一个java编程的问题:将SqList类的insert()操作进行如下改进 蒜皮做枕头有什么好处 二套,天津公积金贷款最多能贷多少 开头带蝉字的有娜些电影 孙嘉琳的国籍 吃蒜皮有好处吗 吃蒜皮有没有好处? 电影蝉翼说明了什么 鸡毛和蒜皮在中医药里面各有哪些功效? 在天津购买二月套房子是否可以申请公积金贷款呢,二套房公积金贷款额度是多少呢 薄如蝉翼这部电影主要是说什么啊 蝉翼剧情讲什么 蝉翼电影中郑列给舒晓曼喝的是什么茶叶 太阳能热水器需要接燃气或电热水器使用吗 在天津市夫妻二人公积金贷款买二手房最多贷多少? 蝉翼的剧情简介 蝉翼微电影改名为什么 手机哔哩哔哩怎么把下载视频保存到相册里? 为什么我吃黑枸杞泡水会拉肚子 喝黑枸杞水能引起拉肚子吗 用java写个顺序表插入算法的实现? 喝黑枸杞拉肚子怎么办 喝黑枸杞拉肚子还可以服用么 吃了黑枸杞,肚子疼并且拉肚子是怎么回事 win10关闭家庭组 Win10家庭组关闭怎么弄 密室逃脱100个房间5第二十关怎么过 越狱密室逃脱5第20关怎么过 第二十关通关攻略详解 密室逃脱5第20关的星星图怎么画不上 密室逃脱第5第二关怎么过图解 密室逃脱5 共20关 第十三关怎么过 快手店铺关闭后怎样打开- 问一问 在wifi万m能钥匙里下了个密室逃脱5,共20关,第10关怎么过,或全攻略 密室逃脱5的第十关怎么过怎样才能把他亮起来 英语翻译汉语拼音 教外国人汉语拼音 手术丰胸的种类 一曲相思m哥谁有完整版MP3,求发给我1746073551 考二级注册消防师的条件和时间?在北京和河北报名有那些不同?