目录
1.把元素尾插到顺序表末尾 add(String elem)
2.按元素插入到任意中间位置 add(int index,String elem)
3.按照下标位置删除元素 remove(int index)
4.按照元素的值来删除元素 remove(String elem)
7.判断元素是否存在 contains(String elem)
9.查找元素位置(从后往前找) lastindexOf(String elem)
一、主函数
public static void main(String[] args) {
addTest();//添加
removeTest();//删除
getsetTest();//获取、修改
containsAndindexofTest();//是否存在、查找
clearsizeisEmptyTest();//清空、大小、是否为空
}
二、属性
private String[] data;
//当前顺序表中有效元素个数
private int size=0;
//当前顺序表中最大容纳元素个数,如果size超过了capacity,就需要扩容
private int capacity=100;
三、构造方法
public myArrayList() {
data=new String[capacity];
}
四、方法
实现扩容kuorong()
private void kuorong(){
//先把capacity变大,变大公式,可以随意来确定
capacity=2*capacity;
String[] newData=new String[capacity];
//把旧的数组中的数据拷贝到新数组中
for (int i=0;i<data.length;i++){
newData[i]=data[i];
}
//把新的大的数组赋值给原有的属性data,同时会释放掉旧的数组
data=newData;
}
1.把元素尾插到顺序表末尾add(String elem)
public void add(String elem){
//直接把新的元素放到size的位置上即可
if (size>=capacity){
//需要先扩容
kuorong();
}
data[size]=elem;
size++;
}
2.按元素插入到任意中间位置add(int index,String elem)
public void add(int index,String elem){
//如果index=size,相当于把新元素插到末尾
if (index<0||index>size){
return;
}
if (size>capacity){
kuorong();
}
//把elem放到index位置上,不能覆盖掉已有元素
//需要把index位置元素,依次往后搬运,给index位置腾出空闲位置,放elem
for (int j=size-1;j>=index;j--){
data[j+1]=data[j];
}
data[index]=elem;
size++;
}
3.按照下标位置删除元素remove(int index)
public String remove(int index){
if (index<0||index>=size){
return null;
}
for (int i=index;i<size-1;i++){
data[i]=data[i+1];
}
size--;
return data[index];
}
4.按照元素的值来删除元素remove(String elem)
public boolean remove(String elem){
int index=0;
for (;index<size;index++){
if (data[index].equals(elem)){
break;
}
}
if (index>=size){
//没有找到,删除失败
return false;
}
//找到匹配的元素了,从index位置开始进行搬运
for (int i=index;i<size-1;i++){
data[i]=data[i+1];
}
size--;
return true;
}
5.根据下标获取元素
public String get(int index){
if (index<0||index>=size){
return null;
}
return data[index];
}
6.根据下标修改元素get(int index)
public void set(int index,String elem){
if (index<0||index>=size){
System.out.println("下标越界");
}
data[index]=elem;
}
7.判断元素是否存在contains(String elem)
public boolean contains(String elem){
for (int i=0;i<size;i++){
if(data[i].equals(elem)){
return true;
}
}
return false;
}
8.查找元素位置indexOf(String elem)
public int indexOf(String elem){
for (int i=0;i<size;i++){
if (data[i].equals(elem)){
return i;
}
}
return -1;
}
9.查找元素位置(从后往前找)lastindexOf(String elem)
public int lastindexOf(String elem){
for (int i=size-1;i>=0;i--){
if (data[i].equals(elem)){
return i;
}
}
return -1;
}
10.清空元素clear()
public void clear(){
size=0;
}
11.大小size()
public int size(){
return size;
}
12.是否为空isEmpty()
public boolean isEmpty(){
return size==0;
}
五、调用方法(只举例其中一个调用)
private static void addTest(){
myArrayList myArrayList=new myArrayList();
myArrayList.add("c");
myArrayList.add("c1");
myArrayList.add("c2");
myArrayList.add("c3");
System.out.println(myArrayList);
myArrayList.add(2,"aa");
System.out.println(myArrayList);