众所周知,数据结构与算法在我们学习中起着举足轻重的作用,自己大二的时候也学过,但是由于长时间没有回顾与复习,基本上也忘得差不多了,想着刚好趁着这段空闲时间,打算重新复习一下数据结构与算法的基本知识。
数据结构的基本使用
数据结构的基本操作教材上讲解得十分清楚,也就不再多说,直接贴代码吧。
public class TestArray {
public static void main(String[]args) {
//创建一个数组
int[] arr1=new int[3];
//获取数组长度
int length1=arr1.length;
System.out.print(length1);
//访问数组中的元素:数组名【下标】
int element0=arr1[0];
System.out.print("element0:"+element0);
//为数组元素赋值
arr1[0]=99;
arr1[1]=98;
arr1[2]=96;
System.out.print("element0:"+arr1[0]);
//遍历数组
for(int i=0;i<length1;i++) {
System.out.println("arr1 element:"+i+":"+arr1[i]);
}
//创建数组的同时为元素赋值
int[] arr2=new int[] {99,98,97,96,50};
//获取数组长度
System.out.println("arr2 length:"+arr2.length);
}
}
删除数组中的元素
要删除一个数组中的元素,则必须要知道要删除数组的下标。即可以通过另外创建一个新的数组,新数组的长度为原来数组-1;视线起来也并不复杂。
public class TextArray2 {
public static void main(String[]args) {
//如何删除数组中的元素
//目标数组
int [] arr=new int[] {9,8,7,6,5,4};
//要删除元素数组的下标
int dist=3;
System.out.println(Arrays.toString(arr));
//创建一个新的数组,长度是原数组的长度-1
int [] newArr=new int[arr.length-1];
//赋值原数组中除了要删除的那个元素到新的数组中
for(int i=0;i<newArr.length;i++) {
//要删除的元素之前的元素
if(i<dist) {
newArr[i]=arr[i];
//要删除的元素之后的数
}else
{
newArr[i]=arr[i+1];
}
}
//新数组替换旧数组
arr=newArr;
System.out.println(Arrays.toString(arr));
}
}
面向对象的数组
针对数组元素的操作,无非就是增删改查这几种操作。
具体的代码实现如下:
public class MyArray {
//用于存储数字的数组
private int[] elements;
public MyArray(){
elements=new int [0];
}
//获取数组长度的方法
public int size() {
return elements.length;
}
//在数组的末尾添加一个元素
public void add(int element) {
int [] newArr=new int[elements.length+1];
//把原来数组的元复制到新数组中
for(int i=0;i<elements.length;i++) {
newArr[i]=elements[i];
}
//把添加的元素放到新数组中
newArr[elements.length]=element;
//使新数组替换旧数组
elements=newArr;
}
//打印所有元素到控制台
public void show() {
System.out.println(Arrays.toString(elements));
}
//删除数组中的元素
public void delete(int index) {
//判断下标是否越界
if(index<0 || index>elements.length-1) {
throw new RuntimeException("下标越界");
}
//创建一个新数组,长度为原数组-1
int [] newArr=new int[elements.length-1];
//复制原来数字到新数组
for(int i=0;i<newArr.length;i++) {
//判断
if(i<index) {
newArr[i]=elements[i];
//
}else {
newArr[i]=elements[i+1];
}
}
//新数组替换旧数组
elements=newArr;
}
//获取某个元素
public int get(int index) {
return elements[index];
}
//插入一个元素到指定位置
public void insert(int index,int element) {
//创建一个新的数组
int[] newArr=new int[elements.length+1];
//将原数组中的元素放到新的数组里面
for(int i=0;i<elements.length;i++) {
//目标元素之前的元素
if(i<index) {
newArr[i]=elements[i];
}else {
//目标元素之后的元素
newArr[i+1]=elements[i];
}
}
//插入新的元素
newArr[index]=element;
//新数组替换旧数组
elements=newArr;
}
//替换指定位置的元素
public void set(int index,int element) {
//判断下标是否越界
if(index<0 || index>elements.length-1) {
throw new RuntimeException("下标越界");
}
elements[index]=element;
}
}
public class TextMyArray {
public static void main(String[] args) {
//创建一个可变的数组
MyArray ma=new MyArray();
//获取长度
int size=ma.size();
//System.out.println(size);
ma.show();
//在可变数组中添加一个数组
ma.add(99);
ma.add(98);
ma.add(97);
//显示可变数组中的所有元素到控制台
ma.show();
//删除某个元素
ma.delete(1);
ma.show();
//取出指定位置的元素
int element=ma.get(1);
System.out.println(element);
System.out.println("===========");
ma.add(96);
ma.add(95);
ma.add(94);
ma.show();
//插入操作
ma.insert(3,33);
ma.show();
System.out.println("===========");
//替换指定位置的元素
ma.set(0, 100);
ma.show();
}
}