所谓数组,是有序的元素序列。 [1]  若将有限个类型相同的变量的集合命名,那么这个名称为数组名。组成数组的各个变量称为数组的分量,也称为数组的元素,有时也称为下标变量。用于区分数组的各个元素的数字编号称为下标。数组是在程序设计中,为了处理方便, 把具有相同类型的若干元素按无序的形式组织起来的一种形式。 [1]  这些无序排列的同类数据元素的集合称为数组。

  平常使用Java中的数组,数组是最基础的一种数据结构

int[] nums=new int[5];

  定义数组以及数组的构造函数如下

public class Array<E> {
private E[] data;
private int size;
/*
*
* @param 传入数组的容量capacity构造array
* */
public Array(int capacity){
data=(E[])new Object[capacity];
size=0;
}
/*
* 无参数的构造函数,默认数组的容量是capacity=10
* */
public Array(){
this(10);
}
}

  array数组的优点就在于,查询快,查询的时间复杂度为O(1)

//获取index索引位置的元素
public E get(int index){
if(index<0||index>=size)
throw new IllegalArgumentException();
return data[index];
}
//获取末尾元素
public E getLast(){
return data[size-1];
}
//获取头部元素
public E getFirst(){
return data[0];
}

  同样,array数组的缺点就是插入的复杂度为O(n)

    //在第index位置插入一个新元素e
public void add(int index,E e){
if(size==data.length)
throw new IllegalArgumentException();
if(index<0||index>size)
throw new IllegalArgumentException();
for(int i=size-1;i>=index;i--)
data[i+1]=data[i];
data[index]=e;
size++;
}

  完整代码如下:

package Array;

public class Array<E> {
private E[] data;
private int size;
/*
*
* @param 传入数组的容量capacity构造array
* */
public Array(int capacity){
data=(E[])new Object[capacity];
size=0;
}
/*
* 无参数的构造函数,默认数组的容量是capacity=10
* */
public Array(){
this(10);
}
//获取index索引位置的元素
public E get(int index){
if(index<0||index>=size)
throw new IllegalArgumentException();
return data[index];
}
//获取末尾元素
public E getLast(){
return data[size-1];
}
//获取头部元素
public E getFirst(){
return data[0];
}
//获取元素中的个数
public int getSize(){
return size;
}
//获取数组的容量
public int getCapacity(){
return data.length;
}
//返回数组是否为空
public boolean isEmpty(){
return size==0;
}
//末尾添加元素
public void addLast(E e){
add(size,e);
}
//头部添加元素
public void addHeader(E e){
add(0,e);
}
//修改元素
public void change(int index,E e){
if(index<0||index>=data.length)
throw new IllegalArgumentException();
data[index-1]=e;
}
//在第index位置插入一个新元素e
public void add(int index,E e){
if(size==data.length)
throw new IllegalArgumentException();
if(index<0||index>size)
throw new IllegalArgumentException();
for(int i=size-1;i>=index;i--)
data[i+1]=data[i];
data[index]=e;
size++;
}
//查找数组中是否有元素e
public boolean contains(E e){
for(int i=0;i<size;i++)
if(data[i].equals(e))
return true;
return false;
}
//查询元素的索引
public int find(E e){
for(int i=0;i<size;i++)
if(data[i]==e)
return i;
return -1;
}
//从数组中删除元素
public E remove(int index){
if(index<0||index>=size)
throw new IllegalArgumentException();
E ret =data[index];
for(int i=index+1;i<size;i++)
data[i-1]=data[i];
size--;
return ret;
}
//删除头结点
public E removeFirst(){
return remove(0);
}
//删除尾节点
public E removeLast(){
return remove(size-1);
}
//删除元素
public void removeElement(E e){
int index=find(e);
if(index!=-1)
remove(index);
}
@Override
public String toString(){
StringBuilder res=new StringBuilder();
res.append(String.format("Array:size=%d,capacity=%d\n",size,data.length));
res.append('[');
for(int i=0;i<size;i++){
res.append(data[i]);
if(i!=size-1)
res.append(",");
}
res.append(']');
return res.toString();
}
}

  

JAVA数据结构--Array数组实现的更多相关文章

  1. java数据结构--array与ArrayList的区别

    ArrayList 内部是由一个array 实现的. 如果你知道array 和 ArrayList 的相似点和不同点,就可以选择什么时候用array 或者使用ArrayList , array 提供 ...

  2. JAVA数据结构之数组

    接下来的几篇博文会在最近仔细研读数据结构与算法的书籍后会摘录一些要点和总结一些自己的心得体会,帮助大家更深入地理解java中的数据结构和一些基本的算法,同时巩固自己数据结构和算法这些最基础的计算机知识 ...

  3. 【Java】Array 数组

    概述 数组是多个相同数据类型按一定顺序排列的一组数据 特点: - 数据类型相同!! - 长度固定!! 构成数组的几个要素 - 数组名称 - 下标,又称索引 - 元素 - 数组长度 数组是一种引用类型, ...

  4. Java 数据结构之数组

    public class Arrays {    //创建一个Integer空数组    public static Integer[] player=null;    //添加球员号码    pri ...

  5. Java Array数组使用详解

    本文主要讲解java中array数组使用,包含堆.栈内存分配及区别 1.动态初始化 package myArray; /* * 堆:存储的是new出来的东西,实体,对象 * A 每个对象都有地址值 * ...

  6. Java数据结构和算法(二)——数组

    上篇博客我们简单介绍了数据结构和算法的概念,对此模糊很正常,后面会慢慢通过具体的实例来介绍.本篇博客我们介绍数据结构的鼻祖——数组,可以说数组几乎能表示一切的数据结构,在每一门编程语言中,数组都是重要 ...

  7. Java数据结构和算法 - 数组

    Q: 数组的创建? A: Java中有两种数据类型,基本类型和对象类型,在许多编程语言中(甚至面向对象语言C++),数组也是基本类型.但在Java中把数组当做对象来看.因此在创建数组时,必须使用new ...

  8. Java数据结构和算法(二):数组

    上篇博客我们简单介绍了数据结构和算法的概念,对此模糊很正常,后面会慢慢通过具体的实例来介绍.本篇博客我们介绍数据结构的鼻祖——数组,可以说数组几乎能表示一切的数据结构,在每一门编程语言中,数组都是重要 ...

  9. Java数据结构和算法之数组与简单排序

    一.数组于简单排序 数组 数组(array)是相同类型变量的集合,可以使用共同的名字引用它.数组可被定义为任何类型,可以是一维或多维.数组中的一个特别要素是通过下标来访问它.数组提供了一种将有联系的信 ...

随机推荐

  1. [Python]利用type()动态创建类

    Python作为动态语言,可以动态地创建函数和类定义.比如说定义一个Hello类,就写一个hello.py模块: #! /usr/bin/env python #coding=utf-8 class ...

  2. Mockplus组件样式库一键解决风格复用

    在Mockplus3.3版本中,新增了组件样式库,可以快速复用组件风格,同时可以将组件风格保存到库中. 官网地址:https://www.mockplus.cn 1. 保存样式 选中组件,设置好该组件 ...

  3. scalr调用openstack接口

  4. parseInt(string, radix)

    参数 描述 string 必需.要被解析的字符串. radix 可选.表示要解析的数字的基数.该值介于 2 ~ 36 之间. 如果省略该参数或其值为 0,则数字将以 10 为基础来解析.如果它以 “0 ...

  5. iOS7修改UISearchBar的Cancel按钮的颜色和文字

    两行代码搞定: [[UIBarButtonItem appearanceWhenContainedIn: [UISearchBar class], nil] setTintColor:[UIColor ...

  6. EventBus事件总线框架(发布者/订阅者模式,观察者模式)

    一. android应用内消息传递的方式: 1. handler方式-----------------不同线程间传递消息. 2. Interface接口回调方式-------任意两个对象. 3. In ...

  7. eclipse中配置server中选择tomcat8无法进行下一步处理

    在创建server的时候,选择tomcat8后,server name为空,并且无法手动输入,同时无法进行下一步操作. 解决方案如下: 1.退出eclipse. 2.找到eclipse[工作空间][当 ...

  8. struts2+ckeditor配置图片上传

    又是一个漫漫长夜. 公司的编辑器坏了,用的是百度编辑器,上传图片的网址被框架给拦截了,我们本地怎么测试都没问题,放到服务器就这样了.和老李找了半天,疯了,没原因的. 笔者以前用过jsp+ckedito ...

  9. MVP社区巡讲 12月5日北京站| 12月12日上海站

    2015年底的社区巡讲Powered MVP Roadshow正式启动啦!12月5日周六下午北京场,12月12日周六下午上海场. 欢迎各位邀请您的同事朋友来参加MVP的社区活动,也邀请您发送活动信息( ...

  10. Spring学习(五)——集成MyBatis

    本篇我们将在上一篇http://www.cnblogs.com/wenjingu/p/3829209.html的Demo程序的基础上将 MyBatis 代码无缝地整合到 Spring 中. 数据库仍然 ...