数据结构---Java---数组
Posted anpeiyong
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数据结构---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---数组的主要内容,如果未能解决你的问题,请参考以下文章
如何在片段中使用 GetJsonFromUrlTask.java
错误代码:错误域 = NSCocoaErrorDomain 代码 = 3840“JSON 文本没有以数组或对象和允许未设置片段的选项开头。”