java数组数据结构_Java数据结构之数组

自定义数组(面向对象编程):

直接上代码:package com.xingej.algorithm.datastructure.array;

/**

* 面向对象编程

*

* 自定义类数组

*

* 你一定要明白,这是在JDK基础之上的封装,要学会这种思路,其他框架如netty 也是在前者的基础上封装而来的,如有一

*

* 部分是封装的线程池

*

* @author erjun 2017年11月28日 下午9:42:10

*/

public class MyArray {

// 定义的数据结构,类型是 数组

// 这是最核心的组件,其他都是围绕这个来进行操作的

private long[] arr;

// 表示有效数据的长度,也就是说,数组里有多少个数组

private int elements;

public MyArray() {

// 默认可以存储50个数字

arr = new long[50];

}

public MyArray(int maxsize) {

arr = new long[maxsize];

}

// 插入数据

public void insert(long value) {

arr[elements] = value;

// 每次插入数据,都会自增一次

elements++;

}

// 根据索引,来查找数据

public long get(int index) {

if (index >= elements || index 

throw new ArrayIndexOutOfBoundsException();

}

return arr[index];

}

// 显示数据,也就是,打印数组里的内容

public void display() {

// 说明,此时数组里,还没有内容呢

if (elements <= 0) {

return;

}

System.out.print("[ ");

for (int i = 0; i 

System.out.print(arr[i] + " ");

}

System.out.println("]");

}

// 根据输入的值,来返回 索引值

public int getIndexByValue(long value) {

int i = 0;

for (; i 

if (arr[i] == value) {

// 如果找到的话,就立即返回索引值

return i;

}

}

return -1;

}

// 根据索引值,来删除数组里的元素

public void delete(int index) {

if (index >= elements || index 

throw new ArrayIndexOutOfBoundsException();

}

// 将后面的元素,往前移动

for (int i = index; i 

arr[i] = arr[i + 1];

}

// 最后,将有效值,减一

elements--;

}

// 更新值

public void update(int index, long newValue) {

if (index >= elements || index 

throw new ArrayIndexOutOfBoundsException();

}

arr[index] = newValue;

}

}

测试用例:package com.xingej.algorithm.datastructure.array;

import org.junit.Before;

import org.junit.Test;

import com.xingej.algorithm.datastructure.array.MyArray;

/**

* 面向对象编程,

*

* 也就是说,你操作的 都是对象,而非基本数据类型了

*

*

* @author erjun 2017年11月28日 下午9:59:36

*/

public class MyArrayTest {

private MyArray myArray;

@Before

public void init() {

myArray = new MyArray();

testInsert();

}

// 插入数据测试

@Test

public void test() {

myArray.insert(20);

System.out.println("----:\t" + myArray.get(0));

}

@Test

public void testInsert() {

myArray.insert(20);

myArray.insert(10);

myArray.insert(5);

myArray.insert(30);

}

// 显示/打印数组里的内容

@Test

public void testDisplay() {

myArray.display();

}

// 显示/打印数组里的内容

@Test

public void testGetIndexByValue() {

System.out.println("---索引值是:\t" + myArray.getIndexByValue(20));

}

// 根据下标,来删除指定位置的元素

@Test

public void testDelete() {

System.out.println("---删除之前打印数组里的元素------");

myArray.display();

myArray.delete(5);

System.out.println("---删除之后打印数组里的元素------");

myArray.display();

}

@Test

public void testUpdate() {

myArray.update(2, 100);

System.out.println("---更新之后的值----:\t" + myArray.get(2));

}

}

代码已经上传到git上了:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/563342.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

java项目如何单元测试_大家java web项目开发做单元测试吗?

java web项目测试用Web的测试工具&#xff0c;如HtmlUnit&#xff0c;JWebUnit等。main()方法就可以测试&#xff0c;在main方法中获得connection对象将他输出就可以了。如果正常输出一大串就是对了。例子&#xff1a;public class DBConnection {private static String url &…

python双素数_python双素数_用Python打印100以下的所有双素数对

^{bq}$这是一种基于筛分的方法&#xff0c;它有点短&#xff0c;速度快得多&#xff1a;def find_prime_pairs(n):sieve [True] * nif n > 0:sieve[0] Falseif n > 1:sieve[1] Falsefor number in range(2, int(n ** 0.5) 1):if sieve[number]:for index in range(nu…

python无所不能_python-列表

列表创建&#xff1a;# 方式一&#xff1a;(常用)s [1, 2, 小超银]print(s) # [1, 2, 小超银]# 方式二&#xff1a;(不常用)s1 list() # 空列表l1 list(123)print(l1) # [1, 2, 3]# 方式三&#xff1a;列表推导式l1 [i for i in range(1,5)]print(l1) # [1, 2, 3, 4]增&…

lvds接口屏线安装图解_五分钟让你学会液晶拼接屏安装方法

液晶拼接屏成为目前比较热门的大屏显示系统&#xff0c;技术比较成熟&#xff0c;清晰度高、维护方便&#xff0c;性价比也还不错&#xff0c;市场需求量较大。但是液晶拼接屏安装方法很多人并不了解&#xff0c;下面小编就来简单介绍一下。以46寸液晶拼接屏指导安装为例&#…

cmd255command.executereader()打印连接错误_打印经常遇到的几个问题,轻松解决

在平常的工作中&#xff0c;我们经常会遇到一些打印问题&#xff0c;今天就分享下几个常见的故障问题解决。wps/office文档一点击打印就卡死这种一般默认打印机设置的是其它电脑共享的情况下出现的&#xff0c;当与主机的连接出现异常或者主机的打印设置有问题时&#xff0c;就…

如何制定客户留存策略_商客通:办理石家庄400电话如何留存客户

【办理石家庄400电话如何留存客户】在如今理性消费的市场&#xff0c;400电话能够为在消费者心中为企业营造一份信任感&#xff0c;彰显企业关怀及企业责任感&#xff1b;为消费者提供畅达的通信渠道、完善的企业服务保障。石家庄400电话搬家不换号石家庄企业在公司搬迁或者员工…

普中51控制火焰传感器_汽车爆震传感器的工作原理及的检测方法、处理

汽车爆震传感器的工作原理及的检测方法、处理黄永刚1 爆震传感器的工作原理按照结构的不同&#xff0c;可以将汽车爆震传感器分为压电式非共振型爆震传感器、压电式共振型爆震传感器和压电式火花塞座金属垫型爆震传感器&#xff0c;又可以分为压电式爆震传感器和电感式爆震传感…

idb 怎么回复mysql_MysqliDb 库的一些使用简单技巧(php)

一.分页功能假设接口要接受输入&#xff1a;page, page_limit&#xff0c;key&#xff0c;value&#xff0c;table 来查询 table 中 key like value 的元组中以 page_limit 为 page size 时第 page 页的数据。要求输出为&#xff1a;{"count" > $count&#xff0c…

java绘制流程图_如何才能更好地绘制计算机毕业设计中各种图表

“ 毕设论文中的各种图表是不可或缺的&#xff0c;如果只是单纯的文字&#xff0c;或者图表较少&#xff0c;达不到要求的话&#xff0c;最终是通过不了答辩审核的&#xff01;”目前绘制图表的软件很多&#xff0c;比如VISIO等&#xff0c;切记尽量不要使用word软件进行绘制&a…

arcgis加载dwg显示一个点_Arcgis添加控制点配准校正影像,更新校正之后,其他软件打开之后,影像位置没有校正解决办法...

使用有偏移的两景影像srcImg.tif 和 refImg.tif举例&#xff0c;用refImg.tif为参考&#xff0c;把待校正影像srcImg.tif&#xff0c;与refImg.tif配准一致。原始影像如下所示&#xff1a;这里就不演示如何采集控制点了&#xff0c;大家可以搜索arcgis配准详细步骤&#xff1b;…

网页检测不到java无法打印_如果PC连接到网络打印机,如何检查java?

根据“How Network Printing Works”,它实际上取决于打印机的类型和它支持的协议.如果您知道打印机使用的IP和端口,并且您的打印机支持SNMP(仅选择协议),则可以使用SNMP协议1查询打印机以获取信息. Java libSNMP4j可以帮助您实现这一目标.我建议不要使用它,除非打印机,IP和端口…

空投坐标怎么看6_嗦粉不咯?桂林米粉店将分三四五星级,你怎么看? 旅行 6 月 4 日热点速递...

吃货们请听好&#xff0c;以下内容可能与你有关~来看今日好问广西无疑是嗦粉星人的圣地&#xff0c;桂林米粉、柳州螺蛳粉、南宁老友粉 ...... 用手指都不够数。这不&#xff0c;桂林发布「米粉新政」&#xff0c;从 7 月起桂林米粉店划分为三星级、四星级、五星级三个等级。如…

java list应用_java中list集合的应用

java中list集合的应用 1.数组列数据的添加与删除&#xff1a; List list new LinkedList(); list new ArrayList(); 产生一个数组列对象并建立双向连表。 连表分为单向连表和双向连表&#xff1b;单向连表就像&#xff1a;a 只能到 b&#xff0c;b 不能到 c&#xff1b;双向连…

ubuntu 自动加载ko_开屏广告太烦人?用这个只有 2M 的 App,助你自动跳过 5 秒等待...

手机上的什么按钮会让你不假思索点击&#xff1f;除了抢红包&#xff0c;恐怕就是应用启动页的「跳过广告」了。「跳过广告」会这么容易被叉掉吗&#xff1f;显然&#xff0c;如果不够快准狠&#xff0c;连戳几次没反应不说&#xff0c;还有可能在戳偏后继续忍受广告跳转……掐…

java union pay 代码_Java标记了union / sum类型

使用一个私有构造函数创建一个抽象类,并在类中嵌套“数据构造函数”(左侧和右侧静态工厂方法),以便它们可以看到私有构造函数,但没有其他任何东西可以有效地密封类型.使用抽象方法either来模拟详尽的模式匹配,在静态工厂方法返回的具体类型中适当地覆盖.实现便利方法(如fromLef…

怎样查看cudnn版本_tensorflowGPU版本踩坑记录

终于安装完成了tensorflow&#xff0c;写一下过程开心的记录一下之前按照网上的教程&#xff0c;装了半天&#xff0c;下对应的cuda和cudnn&#xff0c;搞了半天&#xff0c;结果is_gpu_avaliable()函数通不过&#xff0c;查了半天&#xff0c;只找到cuda和cudnn版本不对应&…

java继承调用先后_「继承顺序」JAVA继承顺序 - seo实验室

继承顺序当使用继承这个特性时&#xff0c;程序是如何执行的&#xff1b;继承的初始化顺序1.初始化父类再初始子类2.先执行初始化对象中属性&#xff0c;再执行构造方法中的初始化当使用继承这个特性时&#xff0c;程序是如何执行的呢&#xff0c;也就是说我们需要关注继承的初…

手机连接蓝牙扫码枪_宝马车与手机无法蓝牙连接的技术通报

点击↑上方蓝字关注置顶&#xff0c;懂车&#xff0c;更懂宝马&#xff01;故障现象&#xff1a;手机电话与车辆无法连接&#xff0c;故障信息显示“设备无法连接”&#xff0c;诊断时输出故障代码&#xff1a;B7F8BB - “无法启动蓝牙”。涉及车型&#xff1a;F40G02 G05 G06 …

gdb tui 安装_GDB 单步调试汇编

之前在看汇编的时候一直是肉眼看GCC -S的结果&#xff0c;缺点是很不直观&#xff0c;无法实时的看到寄存器的值&#xff0c;所以研究了下如何用GDB调试汇编。当然&#xff0c;写这篇文章更重要的一个目的是半年没有写博客了&#xff0c;博客要长草了。^_^调试汇编的需求有几点…

java中的异常处理语句_Java中实现异常处理的基础知识

Java中实现异常处理的基础知识异常 (Exception)&#xff1a;发生于程序执行期间&#xff0c;表明出现了一个非法的运行状况。许多JDK中的方法在检测到非法情况时&#xff0c;都会抛出一个异常对象。例如&#xff1a;数组越界和被0除。源代码示例&#xff1a;packageyanzheng;//…