public class Arrays {
    //创建一个Integer空数组
    public static Integer[] player=null;
    //添加球员号码
    private static int size=0;//初始化数组的元素个数
    static StringBuffer sb=new StringBuffer();
    public static void init(int initialCapacity){//初始容量为5的线性列表,用来存储数据
        if(initialCapacity<0){
            throw new IllegalArgumentException("容量不能为负数!");
        }
        player=new Integer[initialCapacity];
    }
    
    public static void add(Integer playNum){//为数组添加元素
        //数组扩容
        if(size==player.length){
            Integer[] temp=java.util.Arrays.copyOf(player, player.length*2);
            player=temp;
        }
        player[size]=playNum;
        size++;
    }     private static void  replace(int indexNum,int setNum) {//根据输入的数据替换成新的数据
        int index=getIndexNum(indexNum);//根据输入的数据查看索引位置
        if(index>=0){
            player[index]=setNum;
        }
    }
    private static void indexReplace(int index, int newData) {//根据输入索引位置替换数据
        if(index<0 || index>=size){
            throw new IllegalArgumentException("超出索引位置!");
        }
        player[index]=newData;
    }
    private static int  select(int index) {//根据索引位置查找对应的数据
        if(index<0 || index>=size){
            throw new IllegalArgumentException("超出索引位置!");
        }
        if(index>size-1){
            return -1;
        }
     return player[index];
    }
    private static int getIndexNum(int indexNum) {//根据输入的数据查看索引位置
        for (int index = 0; index <size; index++) {
            if(player[index].equals(indexNum)){
                return index;
            }
        }
        return -1;
    }
    private static void delete(int index) {//删除指定索引位置的数据
        if(index<0 || index>=size){
            throw new IllegalArgumentException("超出索引位置!");
        }
        for (int i = index; i < size-1; i++) {
            player[i]=player[i+1];
        }
        size--;
    }
    //打印数组
    public static void print(){
        if(player==null){
            System.out.println("数组为空!");
            return;
        }
        if(size==0){
            System.out.println("[ ]");
            return;
        }
        sb.append("[");
        for (int index = 0; index < size; index++) {
            sb.append(player[index]);
            if(index!=size-1){
                sb.append(",");
            }else{
                sb.append("]");
            }
        }
        System.out.println(sb.toString());
    }
    public static void main(String[] args) {
        init(5);
        add(11);
        add(22);
        add(33);
        add(44);
        add(55);
        add(66);
        print();
//        int data=select(4);
//        System.out.println(data);
//        int num=getIndexNum(33);//查找值为33的索引位置
//        System.out.println(num);
        //indexReplace(2,337);
        //replace(22, 66);
        //delete(3);
        //print();
    } }

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

  1. JAVA数据结构--Array数组实现

    所谓数组,是有序的元素序列. [1]  若将有限个类型相同的变量的集合命名,那么这个名称为数组名.组成数组的各个变量称为数组的分量,也称为数组的元素,有时也称为下标变量.用于区分数组的各个元素的数字编 ...

  2. JAVA数据结构之数组

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

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

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

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

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

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

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

  6. 【学习总结】java数据结构和算法-第三章-稀疏数组和队列

    相关链接 [学习总结]尚硅谷2019java数据结构和算法 github:javaDSA 目录 稀疏数组 队列 稀疏数组 稀疏数组介绍 图示 应用实例 代码实现 SparseArray.java:与二 ...

  7. 数据结构与算法系列2 线性表 使用java实现动态数组+ArrayList源码详解

    数据结构与算法系列2 线性表 使用java实现动态数组+ArrayList源码详解 对数组有不了解的可以先看看我的另一篇文章,那篇文章对数组有很多详细的解析,而本篇文章则着重讲动态数组,另一篇文章链接 ...

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

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

  9. Java数据结构之队列的实现以及队列的应用之----简单生产者消费者应用

    Java数据结构之---Queue队列 队列(简称作队,Queue)也是一种特殊的线性表,队列的数据元素以及数据元素间的逻辑关系和线性表完全相同,其差别是线性表允许在任意位置插入和删除,而队列只允许在 ...

随机推荐

  1. FastAdmin 社区 FAQ 帖子收集(F4NNIU 版 2018-08-12)

    FastAdmin 社区 FAQ 帖子收集 为什么Selectpage下拉列表在编辑时总是返回第一行的值? https://forum.fastadmin.net/thread/2399 根据条件值判 ...

  2. 发现一个github的奇葩设定

    commit时留下的邮箱,会显示在github的提交记录里,然后居然自动找服务器上的这个邮箱注册的人,显示这个用户名.

  3. php跨域问题

    http://www.cnblogs.com/xiezn/p/5651093.html

  4. 关于 NULL的坑

    有如下的表: select * from testtable where name in ('name'):  结果是第一条: select * from testtable where name n ...

  5. 搭建httpd服务

    实验环境:CentOS7 实验步骤: 安装httpd服务:yum -y install httpd 关闭SELinux:setenforce 0 禁用防火墙策略:iptables -F 启动httpd ...

  6. 动态代理AOP实现方法过滤

    上一节实现了动态代理,接下来 有时候,我不需要在每一个方法都要记录日志,做权限验证 等等. 所有就有了这样的需求.AOP实现特定方法过滤,有选择性的来对方法实现AOP 拦截.就是本节标题所示. 举个例 ...

  7. 【转】Context.getExternalFilesDir()和Context.getExternalCacheDir()方法

    应用程序在运行的过程中如果需要向手机上保存数据,一般是把数据保存在SDcard中的.大部分应用是直接在SDCard的根目录下创建一个文件夹,然后把数据保存在该文件夹中.这样当该应用被卸载后,这些数据还 ...

  8. c++builder Form重载WindowProc、WndProc 截获消息

    c++builder 重载WindowProc.WndProc 截获消息 方法一WindowProc void __fastcall  myWindowProc(Messages::TMessage ...

  9. ___pInvalidArgHandler already defined in LIBCMTD.lib(invarg.obj)

    vs2013编译项目时出错,网上很多的解决方案全都是垃圾,根本不能用 不过也有不是垃圾的,就是下面这个: 关于采用静态链接编译生成EXE库函数重复定义问题 看了好多关于类似LIBCMT.lib(inv ...

  10. love 玫瑰花

    <!doctype html> <html> <head> <title>Love</title> <meta charset=&qu ...