**************************************************************前言**********************************************************

1、在Java中,数组是一种引用数据类型;

数组的  引用变量   与   数组元素分别存储于    栈内存、堆内存中;

只能通过  数组的 引用变量  来访问   数组元素,eg:p[index];

      

2、Java中,数组在内存中的存储形式

      

      引用变量arr    

      执行new int[3],在堆内存中开辟一个空间,生成一个内存地址值(eg:0x0045),然后将该地址值  赋值给  引用变量arr(arr=0x0045),这样引用变量就指向了元素存储的内存位置;

1、概述

    在内存中存储方式:连续的、固定大小;

【自定义数组】

  删除:指定index位置之后的数据整体左移即可

  1. package com.exiuge.mytest.array;
  2.  
  3. public class MyArray {
  4.  
  5. private long[] arr;
  6. /**
  7. * 实际数组元素大小
  8. */
  9. private int elementsSize;
  10. /**
  11. * 初始容量50
  12. */
  13. private static final int initSize=50;
  14.  
  15. public MyArray(){
  16. arr=new long[initSize];
  17. }
  18.  
  19. /**
  20. * insert
  21. * @param value
  22. */
  23. public void insert(Long value){
  24. if (elementsSize>=initSize){
  25. throw new ArrayIndexOutOfBoundsException();
  26. }
  27. arr[elementsSize]=value;
  28. elementsSize++;
  29. }
  30.  
  31. /**
  32. * 展示全部
  33. */
  34. public void display(){
  35. System.out.println("[");
  36. for (int i=0;i<elementsSize;i++){
  37. System.out.print(arr[i]+" ");
  38. }
  39. System.out.println("]");
  40. }
  41.  
  42. /**
  43. * 根据value找下标索引
  44. * @param value
  45. * @return
  46. */
  47. public int findByValue(Long value){
  48. int i;
  49. for (i=0;i<elementsSize;i++){
  50. if (arr[i]==value){
  51. break;
  52. }
  53. }
  54. if (i==elementsSize){
  55. return -1;
  56. }else {
  57. return i;
  58. }
  59. }
  60.  
  61. /**
  62. * 根据下标索引找value
  63. * @param index
  64. * @return
  65. */
  66. public long findByIndex(int index){
  67. if (index>=elementsSize || index<0){
  68. throw new ArrayIndexOutOfBoundsException();
  69. }else {
  70. return arr[index];
  71. }
  72. }
  73.  
  74. /**
  75. * 根据下标索引删除value
  76. * @param index
  77. */
  78. public void deleteByIndex(int index){
  79. if (index>=elementsSize || index<0){
  80. throw new ArrayIndexOutOfBoundsException();
  81. }else {
  82. for (int i=index;i<elementsSize;i++){
  83. arr[index]=arr[index+1];
  84. }
  85. elementsSize--;
  86. }
  87. }
  88.  
  89. /**
  90. * 根据下标索引进行修改value
  91. * @param index
  92. * @param newValue
  93. */
  94. public void updateByIndex(int index,long newValue){
  95. if (index>=elementsSize || index<0){
  96. throw new ArrayIndexOutOfBoundsException();
  97. }else {
  98. arr[index]=newValue;
  99. }
  100. }
  101.  
  102. }

2、效率分析

    查找:

      无序、有序数组,线性查找:o(n);

              二分递归查找:o(log n);

    新增:

      无序数组插入,o(1);

      有序数组插入,先查找o(log n),不存在再插入需要移动,o(n),需要o(n);

    删除:

      无序、有序,先查找o(log n),存在再删除需要移动,o(n),需要o(n);

    

数据结构---Java---数组的更多相关文章

  1. Java 数组

    数组对于每一门编程语言来说都是重要的数据结构之一,当然不同语言对数组的实现及处理也不尽相同. Java语言中提供的数组是用来存储固定大小的同类型元素. 你可以声明一个数组变量,如numbers[100 ...

  2. Java数组(初学者必看)

    数组无论在哪种编程语言中都算是最重要的数据结构之一,同时不同语言的实现及处理也不尽相同.但凡写过一些程序的人都知道数组的价值及理解数组的重要性,与链表一道,数组成为了基本的数据结构.尽管Java提供了 ...

  3. Java数组的声明和遍历

    Java 数组 数组对于每一门编程语言来说都是重要的数据结构之一,当然不同语言对数组的实现及处理也不尽相同. Java 语言中提供的数组是用来存储固定大小的同类型元素. 你可以声明一个数组变量,如 n ...

  4. Java开发知识之Java数组

    Java开发知识之Java数组 一丶数组简介 首先,不管是Java 还是 C++ 还是其它语言.都有数组. (有可能叫法不同) 数组简而言之就是存储一段连续相同数据类型的数据结构 在Java中数组可以 ...

  5. Java 13 - Java 数组

    Java 数组 数组对于每一门编程语言来说都是重要的数据结构之一,当然不同语言对数组的实现及处理也不尽相同. Java语言中提供的数组是用来存储固定大小的同类型元素. 你可以声明一个数组变量,如num ...

  6. 1.1使用java数组,并开始封装我们自己的数组

    今天感冒了,全身酸软无力,啥样不想做,就来学习吧,此节我们从初步使用java中提供的数组,然后分析相关情况,过渡到封装我们自己的数组. 一.我们先来感受一下java提供的数组,以整型数组(int[]) ...

  7. 浅析Java 数组-基础详解

    什么是数组:数组对于每一门编程语言来说都是重要的数据结构之一,当然不同语言对数组的实现及处理也不尽相同. Java 数组:用来存储固定大小的同类型元素. 一 声明.创建,初始化Java 数组 写在前面 ...

  8. Java-Runoob:Java 数组

    ylbtech-Java-Runoob:Java 数组 1.返回顶部 1. Java 数组 数组对于每一门编程语言来说都是重要的数据结构之一,当然不同语言对数组的实现及处理也不尽相同. Java 语言 ...

  9. Java数组备忘录

    前言 近期用Java做ACM题目的时候,常常忘记数组怎样实现静态初始化,所以这里记录一下Java数组使用的常识. Java数组常识 数组在Java中是一个对象,数组实例须要通过new操作符进行创建. ...

  10. Java-杂项:Java数组Array和集合List、Set、Map

    ylbtech-Java-杂项:Java数组Array和集合List.Set.Map 1.返回顶部 1. 之前一直分不清楚java中的array,list.同时对set,map,list的用法彻底迷糊 ...

随机推荐

  1. python3-字典中包含字典

    # Auther: Aaron Fan #定义字典及内容av_catalog = { "欧美":{ "www.youporn.com": ["很多免费 ...

  2. java Iterator类

    查看java源码. /* * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. * ORACLE ...

  3. java全栈day10--接口 多态

    接口的概念 接口是功能的集合,同样可看做是一种数据类型,是比抽象类更为抽象的”类”. 接口只描述所应该具备的方法,并没有具体实现,具体的实现由接口的实现类(相当于接口的子类)来完成.这样将功能的定义与 ...

  4. Mac常用开发工具

    1.svn客户端 SVN client SmartSVN 2.git客户端 SourceTree | Free Git GUI for Mac and Windows 3.远程windows系统工具( ...

  5. delphi xe6 调用java GPS的方法

    如果用xe6自带的LocationSensor控件,默认优先使用网络位置,网络位置定位精度不准确,不能满足高精度定位的要求.但xe6自带的LocationSensor控件不能指定网络定位优先还是GPS ...

  6. C# 三元运算

    x=,y=; z=x>y? : 结果z= x=,y=; z=x>y? : 结果z=

  7. Service Fabric 注意事项

    1. ActorTimer和ActorReminder会阻塞一个Actor的其他外部方法调用,即ActorTimer和ActorReminder内部就去未执行完毕之前,该Actor其他方法只能等待. ...

  8. 将Winform程序及dll打包成可执行的exe

    使用场景 通常开发的Winform程序,引用了其他类库后,在输出目录下都会产生很多DLL文件,exe执行时必须依赖这些DLL.想要Winform程序只有一个可执行exe文件,又不想打包成安装包,就可以 ...

  9. Jquery学习理解 (课堂)

    Jquary概述 3 1.Jquary简介 3 1.1什么是jquery 3 2.使用jquary 4 2.1浏览器如何解析HTML文件 4 2.2利用选择器定位节点 4 2.3调用方法操作节点 5 ...

  10. bzoj3328: PYXFIB(单位根反演+矩阵快速幂)

    题面 传送门 题解 我们设\(A=\begin{bmatrix}1 & 1 \\ 1 & 0\end{bmatrix}\),那么\(A^n\)的左上角就是\(F\)的第\(n\)项 所 ...