目录
普通的数组已经确定了数组的大小,没办法进行扩容,也不能进行增删改查
基础数组
public class Main {
public static void main(String[] args) {
//创建数组arr
int[] arr = new int[10];
//给每一个元素赋值
for (int i = 0; i < arr.length; i++) {
arr[i]=i;
}
//使用foreach输出每一个元素
for (int arrNum : arr) {
System.out.println(arrNum);
}
//分割线线.....................
System.out.println("分割线线.....................");
int[] arr1 = new int[]{1,3,5};
for (int arr1Num : arr1) {
System.out.println(arr1Num);
}
}
}
二次封装数组(最基础部分)
public class Array {
private int arr[];//定义一个数组
private int size; //数组元素的个数
public Array(int capacity) {//定义数组的容量
arr=new int[capacity];
size=0;
}
public Array() {
this(10);//调用了上面那个构造函数
}
public int getSize() {
return size;//获取元素个数
}
public int getCapacity(){
return arr.length;//获取数组的容量
}
public boolean isEmpty(){//判断数组是否为空 ,若size==0 则返回true
return size==0;
}
}
数组的增删改查
1.数组的增加
size不仅仅代表的是元素的个数,还指向了第一个不含元素的位置
从数组后面添加
public void addLast(int e){//e为要添加的元素
if (size==arr.length){//如果第一个不含元素的位置 等于数组的长度,则添加失败
throw new IllegalArgumentException("添加失败,数组已满");
}
arr[size]=e;//添加到第一个不含元素的位置
size++;
}
按照索引添加
i从size-1开始依次往后挪一直到index处停止,并且要注意索引越界和数组已满的情况
public void add(int index,int e){
if (size==arr.length){
throw new IllegalArgumentException("添加失败,数组已满");
}
if (index<0||index>size){
throw new IllegalArgumentException("添加失败,参数不合法");
}
for (int i = size-1; i >=index; i--) {//数组元素依次从后往前挪,看图解
arr[i+1]=arr[i];
}
size++;
}
2.数组的查询
根据索引查询数组元素
因为size是指向第一个没有元素的位置所以index可以对size取等
public int getElement(int index){
if (index<0||index>=size){
throw new IllegalArgumentException("不存在当前索引的元素");
}
return arr[index];//返回当前位置所在的元素
}
判断数组中是否有指定元素
public boolean contain(int e){
for (int i = 0; i < size; i++) {
if (arr[i]==e){
return true;
}
}
return false;
}
}
根据元素查找索引
public int find(int e){
for (int i = 0; i < size; i++) {
if (arr[i]==e){
return i;
}
}
return -1;
}
3.数组的修改
public void set(int index,int e){
if (index<0||index>size){
throw new IllegalArgumentException("修改失败,参数不合法");
}
arr[index]=e;
}
4.数组元素的删除
根据元素索引删除
public int remove(int index){
if (index<0||index>size){
throw new IllegalArgumentException("删除失败,参数不合法");
}
int temp=arr[index];//将被删除的元素作为临时变量保存起来
for (int i = index+1; i < size; i++) {
arr[i-1]=arr[i];
}
size--;
return temp;
}
直接删除某元素
public void removeElement(int e){
int index=find(e);
if (index!=-1){
remove(index);
}else {
System.out.println("数组不存在该元素");
}
}