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

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---数组的更多相关文章

  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. Luogu 4867 Gty的二逼妹子序列

    BZOJ3809,是权限题. 我永远喜欢莫队. 先莫队一下移下左右指针,然后用一个数据结构维护一下区间$[a, b]$中的颜色的值,跟着指针移动一起修改修改,每一次$query$的时候就相当于查询一下 ...

  2. Luogu 3172 [CQOI2015]选数

    考虑枚举$k$的倍数$dk$,容易知道$\left \lceil \frac{L}{K} \right \rceil\leq d\leq \left \lfloor \frac{H}{k} \righ ...

  3. 如果客户端禁用了cookie,如何实现session

    虽然客户端禁用了cookie,那么当访问某一个php文件时,php会先查找php.ini,如果session.use_trans_sid=1/session.use_only_cookie=0,php ...

  4. WordCount编码与测试

    1. github项目地址:https://github.com/wwwwu/WordCount 2.PSP表格: PSP2.1 PSP阶段 预估耗时 (分钟) 实际耗时 (分钟) Planning ...

  5. 添加节点至XML文档中去

    不管是<怎样创建XML文档> http://www.cnblogs.com/insus/p/3276944.html还是<泛型List<T>转存为XML文档> ht ...

  6. Data Base System.Data.OracleClient requires Oracle client software version 8.1.7 or greater解决方案

    System.Data.OracleClient requires Oracle client software version 8.1.7 or greater解决方案 一.问题: 1.通过Syst ...

  7. java 乱码问题解决方案

    java  乱码问题解决方案 一.tomcat: <Connector         port="8080"         maxThreads="150&qu ...

  8. 正经学C#_判断[IF语句]:[c#入门经典]

    判断语句几乎是最为常用的语句之一,是最有效的. 先说IF语句,IF语句也是属于分支的一种,用来控制流程的. IF的语句是这样的 IF(xxx 条件) { //代码块 } ,b; ) { b=a--; ...

  9. 工欲善其事——Sublime Text

    一直在找mac下顺手的代码编辑器,要求能方便地查找和编辑,最好能再集成调试,最后选择了sublime.用了一段时间emacs,但是学习曲线过于陡峭.尤其是眼下的要务是啃代码时,玩弄emacs有点舍本逐 ...

  10. B - EXCEL排序(sort+结构体)

    Excel可以对一组纪录按任意指定列排序.现请你编写程序实现类似功能. Input测试输入包含若干测试用例.每个测试用例的第1行包含两个整数 N (<=100000) 和 C,其中 N 是纪录的 ...