JAVA学习心得

阅读: 评论:0

JAVA学习心得

JAVA学习心得

JAVA学习心得-----关于数组以及运用数组自定义队列

数组
1.储存规定长度并且需要存入数据为相同类型
2.格式为 数据类型[] 数组名 = new 数据类型[]{内容};
例如: 整形数组
int[] S = new int[]{1,2,3};
字符串数组
String[] S = new String[]{“a”,“b”,“c”};

可以不填入内容,在[]写入数字n,那么便创建了一个长度为n的内容是"空"的数列。
3.数组具有连续性,无法直接用本体数组来实现增添删除操作。
4.数组里的内容可以重复,无影响。
队列
格式:Queue queue = new LinkedList<类型>();
许多地方都会说队列先进先出,无长度限制,这实际是JAVA中原Queue里的方法造成的结果,我们也能够自己写入方法,来模拟、改变原JAVA中队列的规则。
自定义队列思路
根本:运用数组来实现规则。
这里的示范,我只让队列存入String类型的数据,数组用String类型来定义。以下图片中的数字代表下标,a表示数据。

1.首先需要一个存有运算规则的类,新建一个MyQueue.java

public class MyQueue {//首先创建一个用来存数据的数组private String[] text = new String[0];//下面编写运算方法}

即可。

2.(写入MyQueue类中)实现添加的功能,运用两个数组进行操作,创建一个比上一个数组长度多1的新数组,将原来数组拥有的数据复制过来,并加入新的数据,最后新数组覆盖掉原数组即可。这里模拟队列,只添加在最后一位。

	//添加(到数组最后)public void add(String a) {//创建一个新数组,比第一个数组长度多1String[] Ntext = new String[text.length+1];//将原数组的数据复制给新数组for(int i=0;i<text.length;i++) {Ntext[i] = text[i];}//将加入的数据放到新数组的最后一位Ntext[Ntext.length-1] = a;//将地址指向新的数组,可以理解为把新数组的数据赋值给原来的数组text = Ntext;

3.实现获取数据功能。

 //从队列中取出一个public String get(int index) {//运用下标来返回数组中的值String a = text[index];return a;}

4.实现返回长度的功能。

//队列的长度public int size() {return text.length;}

5.实现删除功能。模拟队列删除最后一个,只需复制原数组的最后一个数据之前的数据,给新数组即可。

//去除最后一个public void cutlist(){//当队列长度为0时if(text.length == 0) {System.out.println("长度为0,无法删除");}//创建一个新数组,比第一个数组长度少1else {String[] Ntext = new String[text.length-1];//将原数组的数据长度-1的数据,复制给新数组for(int i=0;i<text.length-1;i++) {Ntext[i] = text[i];}//将地址指向新的数组,可以理解为把新数组的数据赋值给原来的数组text = Ntext;}	}

6.实现插入功能,在添加的基础上改进,实现把输入的数据插入到下标位置。思路是复制下标前原数组的内容,在下标出输入a数据,然后复制后一段的内容。需要注意下标的更换。

    //插入到下标index之后public void insert(String a,int index) {//创建一个新数组,比第一个数组长度多1String[] Ntext = new String[text.length+1];//越界判定if(index+1 > text.length||index < 0) {System.out.println("超出长度,撤销替换指令!");}else {//将输入数字下标前的数据复制给新数组for(int i=0;i<index+1;i++) {Ntext[i] = text[i];}//在下标处插入数据aNtext[index+1] = a;//将输入数字下标后的数据复制给新数组for(int j=index+2;j<text.length+1;j++) {Ntext[j] = text[j-1];}//将地址指向新的数组,可以理解为把新数组的数据赋值给原来的数组text = Ntext;}}

7.实现替换功能,输入(数据,下标),替换掉下标处的数据,分别复制下标前与下标后的数据给新数组。我这里是产生比原数组长度多1的新数组,所以会产生1个空位,只需再添加删除里面的逻辑,把最后一个空值删掉即可。

//替换下标index处的元素public void replace(String a,int index) {//创建一个新数组,比第一个数组长度多1String[] Ntext = new String[text.length+1];//越界判定if(index > text.length||index < 0) {System.out.println("超出长度,撤销替换指令!");}else {//将输入数字下标前的数据复制给新数组for(int i=0;i<index;i++) {Ntext[i] = text[i];}//在下标处插入数据aNtext[index] = a;//将输入数字下标后的数据复制给新数组for(int j=index+1;j<text.length;j++) {Ntext[j] = text[j];}//将地址指向新的数组,可以理解为把新数组的数据赋值给原来的数组text = Ntext;}}

8.实现删除指定位置的功能,输入下标,删除掉指定位置的数据。复制下标前与下标后的数据给新数组即可,需要注意新数组中,下标的移动。下图表示,删除的是下标2的数据。

//移除指定位置public void move(int index) {//创建与原长度相等的新数组String[] Ntext = new String[text.length];//将需要去掉的值之前的数给新数组if(index!=text.length) {//越界判定if(index>text.length) {System.out.println("错误!删除指令撤销!");}//else {for(int i=0;i<index;i++) {Ntext[i] = text[i];}for(int j=index+1;j<text.length;j++) {Ntext[j-1] = text[j];}text = Ntext;}}//当需要删除的数是最后一位时else {//将原数组的数据长度-1的数据,复制给新数组for(int i=0;i<text.length-1;i++) {Ntext[i] = text[i];}text = Ntext;
//        	将地址指向新的数组,可以理解为把新数组的数据赋值给原来的数组}}

就先实现这几个功能,接下来加入主函数验证一下是否成功。

    //主函数public static void main(String args[]) {MyQueue tt = new MyQueue();//测试添加tt.add("green");tt.add("blue");tt.add("你好");tt.add("飞机");//添加后System.out.println("队列中数据有["&#(0)+","&#(1)+","&#(2)+","&#(3)+"]");tt.insert("hello",1);//测试插入System.out.println("-------------插入后----------");System.out.println("队列中数据有["&#(0)+","&#(1)+","&#(2)+","&#(3)+","&#(4)+"]");//测试替换tt.replace("红色",0);System.out.println("-------------替换后----------");System.out.println("队列中数据有["&#(0)+","&#(1)+","&#(2)+","&#(3)+","&#(4)+"]");//测试删除tt.move(2);System.out.println("-------------删除后----------");System.out.println("队列中数据有["&#(0)+","&#(1)+","&#(2)+","&#(3)+","&#(4)+"]");}

结果输出:

本文发布于:2024-02-03 01:30:32,感谢您对本站的认可!

本文链接:https://www.4u4v.net/it/170689503747765.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:学习心得   JAVA
留言与评论(共有 0 条评论)
   
验证码:

Copyright ©2019-2022 Comsenz Inc.Powered by ©

网站地图1 网站地图2 网站地图3 网站地图4 网站地图5 网站地图6 网站地图7 网站地图8 网站地图9 网站地图10 网站地图11 网站地图12 网站地图13 网站地图14 网站地图15 网站地图16 网站地图17 网站地图18 网站地图19 网站地图20 网站地图21 网站地图22/a> 网站地图23