数据结构---Java---数组
**************************************************************前言**********************************************************
1、在Java中,数组是一种引用数据类型;
数组的 引用变量 与 数组元素分别存储于 栈内存、堆内存中;
只能通过 数组的 引用变量 来访问 数组元素,eg:p[index];
2、Java中,数组在内存中的存储形式
引用变量arr
执行new int[3],在堆内存中开辟一个空间,生成一个内存地址值(eg:0x0045),然后将该地址值 赋值给 引用变量arr(arr=0x0045),这样引用变量就指向了元素存储的内存位置;
1、概述
在内存中存储方式:连续的、固定大小;
【自定义数组】
删除:指定index位置之后的数据整体左移即可
- package com.exiuge.mytest.array;
- public class MyArray {
- private long[] arr;
- /**
- * 实际数组元素大小
- */
- private int elementsSize;
- /**
- * 初始容量50
- */
- private static final int initSize=50;
- public MyArray(){
- arr=new long[initSize];
- }
- /**
- * insert
- * @param value
- */
- public void insert(Long value){
- if (elementsSize>=initSize){
- throw new ArrayIndexOutOfBoundsException();
- }
- arr[elementsSize]=value;
- elementsSize++;
- }
- /**
- * 展示全部
- */
- public void display(){
- System.out.println("[");
- for (int i=0;i<elementsSize;i++){
- System.out.print(arr[i]+" ");
- }
- System.out.println("]");
- }
- /**
- * 根据value找下标索引
- * @param value
- * @return
- */
- public int findByValue(Long value){
- int i;
- for (i=0;i<elementsSize;i++){
- if (arr[i]==value){
- break;
- }
- }
- if (i==elementsSize){
- return -1;
- }else {
- return i;
- }
- }
- /**
- * 根据下标索引找value
- * @param index
- * @return
- */
- public long findByIndex(int index){
- if (index>=elementsSize || index<0){
- throw new ArrayIndexOutOfBoundsException();
- }else {
- return arr[index];
- }
- }
- /**
- * 根据下标索引删除value
- * @param index
- */
- public void deleteByIndex(int index){
- if (index>=elementsSize || index<0){
- throw new ArrayIndexOutOfBoundsException();
- }else {
- for (int i=index;i<elementsSize;i++){
- arr[index]=arr[index+1];
- }
- elementsSize--;
- }
- }
- /**
- * 根据下标索引进行修改value
- * @param index
- * @param newValue
- */
- public void updateByIndex(int index,long newValue){
- if (index>=elementsSize || index<0){
- throw new ArrayIndexOutOfBoundsException();
- }else {
- arr[index]=newValue;
- }
- }
- }
2、效率分析
查找:
无序、有序数组,线性查找:o(n);
二分递归查找:o(log n);
新增:
无序数组插入,o(1);
有序数组插入,先查找o(log n),不存在再插入需要移动,o(n),需要o(n);
删除:
无序、有序,先查找o(log n),存在再删除需要移动,o(n),需要o(n);
数据结构---Java---数组的更多相关文章
- Java 数组
数组对于每一门编程语言来说都是重要的数据结构之一,当然不同语言对数组的实现及处理也不尽相同. Java语言中提供的数组是用来存储固定大小的同类型元素. 你可以声明一个数组变量,如numbers[100 ...
- Java数组(初学者必看)
数组无论在哪种编程语言中都算是最重要的数据结构之一,同时不同语言的实现及处理也不尽相同.但凡写过一些程序的人都知道数组的价值及理解数组的重要性,与链表一道,数组成为了基本的数据结构.尽管Java提供了 ...
- Java数组的声明和遍历
Java 数组 数组对于每一门编程语言来说都是重要的数据结构之一,当然不同语言对数组的实现及处理也不尽相同. Java 语言中提供的数组是用来存储固定大小的同类型元素. 你可以声明一个数组变量,如 n ...
- Java开发知识之Java数组
Java开发知识之Java数组 一丶数组简介 首先,不管是Java 还是 C++ 还是其它语言.都有数组. (有可能叫法不同) 数组简而言之就是存储一段连续相同数据类型的数据结构 在Java中数组可以 ...
- Java 13 - Java 数组
Java 数组 数组对于每一门编程语言来说都是重要的数据结构之一,当然不同语言对数组的实现及处理也不尽相同. Java语言中提供的数组是用来存储固定大小的同类型元素. 你可以声明一个数组变量,如num ...
- 1.1使用java数组,并开始封装我们自己的数组
今天感冒了,全身酸软无力,啥样不想做,就来学习吧,此节我们从初步使用java中提供的数组,然后分析相关情况,过渡到封装我们自己的数组. 一.我们先来感受一下java提供的数组,以整型数组(int[]) ...
- 浅析Java 数组-基础详解
什么是数组:数组对于每一门编程语言来说都是重要的数据结构之一,当然不同语言对数组的实现及处理也不尽相同. Java 数组:用来存储固定大小的同类型元素. 一 声明.创建,初始化Java 数组 写在前面 ...
- Java-Runoob:Java 数组
ylbtech-Java-Runoob:Java 数组 1.返回顶部 1. Java 数组 数组对于每一门编程语言来说都是重要的数据结构之一,当然不同语言对数组的实现及处理也不尽相同. Java 语言 ...
- Java数组备忘录
前言 近期用Java做ACM题目的时候,常常忘记数组怎样实现静态初始化,所以这里记录一下Java数组使用的常识. Java数组常识 数组在Java中是一个对象,数组实例须要通过new操作符进行创建. ...
- Java-杂项:Java数组Array和集合List、Set、Map
ylbtech-Java-杂项:Java数组Array和集合List.Set.Map 1.返回顶部 1. 之前一直分不清楚java中的array,list.同时对set,map,list的用法彻底迷糊 ...
随机推荐
- python3-字典中包含字典
# Auther: Aaron Fan #定义字典及内容av_catalog = { "欧美":{ "www.youporn.com": ["很多免费 ...
- java Iterator类
查看java源码. /* * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. * ORACLE ...
- java全栈day10--接口 多态
接口的概念 接口是功能的集合,同样可看做是一种数据类型,是比抽象类更为抽象的”类”. 接口只描述所应该具备的方法,并没有具体实现,具体的实现由接口的实现类(相当于接口的子类)来完成.这样将功能的定义与 ...
- Mac常用开发工具
1.svn客户端 SVN client SmartSVN 2.git客户端 SourceTree | Free Git GUI for Mac and Windows 3.远程windows系统工具( ...
- delphi xe6 调用java GPS的方法
如果用xe6自带的LocationSensor控件,默认优先使用网络位置,网络位置定位精度不准确,不能满足高精度定位的要求.但xe6自带的LocationSensor控件不能指定网络定位优先还是GPS ...
- C# 三元运算
x=,y=; z=x>y? : 结果z= x=,y=; z=x>y? : 结果z=
- Service Fabric 注意事项
1. ActorTimer和ActorReminder会阻塞一个Actor的其他外部方法调用,即ActorTimer和ActorReminder内部就去未执行完毕之前,该Actor其他方法只能等待. ...
- 将Winform程序及dll打包成可执行的exe
使用场景 通常开发的Winform程序,引用了其他类库后,在输出目录下都会产生很多DLL文件,exe执行时必须依赖这些DLL.想要Winform程序只有一个可执行exe文件,又不想打包成安装包,就可以 ...
- Jquery学习理解 (课堂)
Jquary概述 3 1.Jquary简介 3 1.1什么是jquery 3 2.使用jquary 4 2.1浏览器如何解析HTML文件 4 2.2利用选择器定位节点 4 2.3调用方法操作节点 5 ...
- bzoj3328: PYXFIB(单位根反演+矩阵快速幂)
题面 传送门 题解 我们设\(A=\begin{bmatrix}1 & 1 \\ 1 & 0\end{bmatrix}\),那么\(A^n\)的左上角就是\(F\)的第\(n\)项 所 ...