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上了:
java数组数据结构_Java数据结构之数组相关推荐
- java中数组的数据结构_Java数据结构与算法(一)--数组
目录 数组是应用最广泛的数据存储结构.它被植入大部分的编程语音.在Java中数组用来存放一种类型的集合. 1.数组的介绍 ①数组的声明 第一种方式: int[] arr = new int[10];/ ...
- java链表模型_Java数据结构和算法(七)——链表
前面博客我们在讲解数组中,知道数组作为数据存储结构有一定的缺陷.在无序数组中,搜索性能差,在有序数组中,插入效率又很低,而且这两种数组的删除效率都很低,并且数组在创建后,其大小是固定了,设置的过大会造 ...
- java 设置数组长度_java如何增加数组长度
遇到一个面试题:在不使用list的add方法的情况下,动态的添加元素(大概是这个样子): ArrayList是基于数组实现的,是一个动态数组,其容量能自动增长,需学习arraylist的相关知识(ht ...
- java数组语法_Java 基本语法----数组
数组 数组概述 数组是多个相同类型数据的组合,实现对这些数据的统一管理. 数组属引用类型,数组型数据是对象(Object),数组中的每个元素相当于该对象的成员变量. 数组中的元素可以是任何数据类型,包 ...
- java交换二维数组行列_java二维数组行列
培训系列AmberXie 求二维数组行列之和把二维数组 a 各行之和分别放入 b... 二维数组例题答案[技巧] [例 1]编写程序,利用二维数组在窗体上输出如图 5x5...如果没有 max 为行列 ...
- java二维数组坐标_Java 二维数组
二维数组的定义 二维数组本质上是以数组作为数组元素的数组,即"数组的数组". 因为数组只能保存一行数据.在生活中,比如坐标等等,我们需要用二维数组来表示.通过行号和列好来定位数据. ...
- java二维数组试题_Java二维数组及习题总结
二维数组 二维数组:就是一个由行和列组成的一个矩阵(Matrix):在这个矩阵中访问元素时,是根据元素的行角标和列角标所确定的. 二维数组在内存中的存储:无论是二维数组,还是多维数组,它们本身就是一个 ...
- java对象类型数组赋值_java声明对象数组
java如何对象创建数组并初始化 急夜影驱动编程小编今天和大家分享答案 /** * 功能:声明一个学生类 * @author qqliweng * 时间:2009-10-22 * 版本:V1.0 */ ...
- java二维数组添加元素_Java二维数组与动态数组ArrayList类详解
java二维数组 java 语言中提供的数组是用来存储固定大小的同类型元素. 1.二维数组初始化和声明 数组变量的声明,和创建数组可以用一条语句完成,如下所示: int a[][] = new int ...
最新文章
- ExtJs选项卡,求大神解答
- Linux命令详解----iostat
- 机器学习之集成学习(一)
- 关于 webapi ajax进度条信息设置
- 多决策决策树_授权员工决策时,意图就是一切
- KICKSTART 语法参考
- canvas js 绘图插件_快速入门前端图表插件Echart
- unity 0 Asset Store ,package如何快速导入,快捷键
- linux的shell命令
- AJAX——ASP.NET AJAX框架(一)ScriptManager
- matlab 好看的颜色代码,科学网—什么是好的颜色表(colormap)? - 雷朝阳的博文...
- 华为C语言编程规范(精华总结)
- laravel 打包成zip并下载
- HDB3码和AMI码通过Matlab实现编码和解码
- 微信多开源码 android,微信(WeChat)电脑端多开分析+源码
- 从 B 站火到 GitHub,国人开发者又一黑科技面世!
- 使用 Audacity 录音
- linux 设置系统时钟,linux clock命令查看和设置硬件时钟
- 人力资源机器_人力资源部门的机器学习和AI
- matlab打开笔记本摄像头_如何利用MATLAB实现摄像头视频获取和保存