集合&实现自己的简单MyArrayList
作者:互联网
一、数组
数组是java语言内置的数据类型,它是一个线性的序列,所以可以快速的访问其他元素,数组和其他数据类型不同,当你创建了一个数组时,他的容量是不变的,而且在生命周期内也是不能改变的。JAVA数组会做边界检查,如果发现有越界现象,会报RuntimeException异常错误,检查边界的代价是效率。
二、集合
JAVA还提供其他集合,list,map,set,它们处理对象的时候就好像这些对象没有自己的类型一样,而是直接归根于Object,这样只需要创建一个集合,把对象放进去,取出时转换成自己的类型就行了。
三、数组和集合的区别
- 数组是静态的,一个数组实例具有固定的大小,一旦创建了就无法改变容量了。而集合可以动态扩展容量,可以根据需要动态改变大小。
- 数组的存放类型只能是一种(基本类型/引用类型),集合存放的类型可以不是一种(不加泛型时添加的类型是Object)
- 数组是java语言中内置的数据类型,是线性排列的,执行效率或者类型检查都是最快的
package array;
import java.util.Arrays;
public class ArrayTest7 {
public static void main(String[] args) {
MyArrayList myArrayList = new MyArrayList();
myArrayList.insert("1");
myArrayList.insert("2");
myArrayList.insert("3");
myArrayList.insert("4");
myArrayList.insert("5");
myArrayList.insert("6");
myArrayList.insert("7");
myArrayList.insert("8");
myArrayList.insert("9");
myArrayList.insert("10");
myArrayList.insert("11");
myArrayList.display();
System.out.println(myArrayList.find("8"));
}
}
class MyArrayList{
private Object[] arr;
private int nElems; //数组的真实长度
//构造方法,初始化数组
public MyArrayList(){
arr = new Object[10];
nElems = 0;
}
//实现插入数据项,注意要实现arr数组的自动扩容
public void insert(Object o){
//判断当前nElems有没有越界,如果说现在插入数组的新元素,下标要超过原数组的最大长度,实施扩容
if (nElems == arr.length) {
arr = Arrays.copyOf(arr, arr.length + (arr.length >> 1));
}
arr[nElems++] = o;
}
//遍历
public void display(){
for (int i = 0; i < nElems; i++) {
System.out.print(arr[i] + " ");
}
}
//查找指定的元素,找到了返回元素在数组中的索引值,找不到返回-1
public int find(Object o) {
int i;
for ( i = 0; i < nElems; i++) {
if (o.equals(arr[i])) {
break;
}
}
if (i < nElems) {
return i;
} else {
return -1;
}
}
//删除指定的元素
public void delete(Object o) {
int i = find(o);
if (i != -1) {
System.arraycopy(arr, i + 1, arr, i, nElems - 1 - i);
nElems--;
}
}
}
标签:insert,arr,nElems,Object,数组,简单,集合,MyArrayList,myArrayList 来源: https://blog.csdn.net/qq_41799736/article/details/110272844