java实现无序数组结构
一、数组的2种定义方式
数据类型 []  数组名称 = new 数据类型[数组长度];
这里 [] 可以放在数组名称的前面,也可以放在数组名称的后面,一般放在名称的前面
数据类型 [] 数组名称 = {数组元素1,数组元素2,......}
这种方式声明数组的同时直接给定了数组的元素,数组的大小有给定的数组元素个数决定
public class ArrayStruct {
    public static void main(String[] args) {
//        int[] nums = new int[10];
//        int nums[] = new int[10];
//        nums = initArray( nums );
//        int[] nums = { 10, 20, 30, 40, 50, 60, 70, 80, 90, 100 };
        int nums[] = { 10, 20, 30, 40, 50, 60, 70, 80, 90, 100 };
        printArray( nums );
    }
    public static int[] initArray( int[] arr ){
        for( int i = 0; i < arr.length; i++ ){
            arr[i] = i * 10;
        }
        return arr;
    }
    public static void printArray( int[] arr ){
        for( int i = 0; i < arr.length; i++ ){
            System.out.print( arr[i] + "\t" );
        }
        System.out.println();
    }
}
二,实现一个自定义的数组结构,包含以下基本操作:
>插入数据
>删除数据
>查找数据
>遍历数据等
package com.ghostwu;
class MyDefineArrayStruct {
    private int[] arr;
    private int curLen;
    private int length;
    public MyDefineArrayStruct(){
        curLen = 0;
        length = 30;
        arr = new int[length];
    }
    public MyDefineArrayStruct( int _length ) {
        curLen = 0;
        length = _length;
        arr = new int[length];
    }
    public int length (){
        return curLen;
    }
    public void print(){
        for( int i = 0; i < curLen; i++ ){
            System.out.print( arr[i] + "\t" );
        }
        System.out.println( );
    }
    public boolean add( int _value ){
        if( curLen >= length ){
            return false;
        }else{
            arr[curLen++] = _value;
        }
        return true;
    }
    public int getItem( int _index ){
        if( _index < 0 || _index > curLen ) {
            System.out.println( "数组下标越界" );
        }
        return arr[_index];
    }
    public int find( int _value ){
        int i;
        for( i = 0; i < curLen; i++ ){
            if( arr[i] == _value ){
                break;
            }
        }
        if( i == curLen ) {
            return -1;
        }
        return i;
    }
    public boolean delItem( int _value ){
        int res = find( _value );
        if( res == -1 ) return false;
        else {
            if( res == curLen - 1 ) {
                curLen--;
            }else {
                for( int i = res; i < curLen - 1; i++ ){
                    arr[i] = arr[i+1];
                }
                curLen--;
            }
        }
        return true;
    }
    public boolean updateItem( int _oldValue, int _newValue ){
        int res = find( _oldValue );
        if( res == -1 ){
            System.out.println( "数组中不存在" + _oldValue );
            return false;
        }else{
            arr[res] = _newValue;
            return true;
        }
    }
}
public class SelfDefineArrayStruct {
    public static void main(String[] args) {
        MyDefineArrayStruct arr = new MyDefineArrayStruct( 10 );
        arr.print();
        arr.add( 10 );
        arr.add( 20 );
        arr.add( 30 );
        arr.add( 40 );
        arr.add( 100 );
        arr.print();
        arr.delItem( 10 );
        arr.print();
        System.out.println( arr.length() );
        arr.delItem( 20 );
        System.out.println( arr.length() );
        arr.updateItem( 30, 300 );
        arr.updateItem( 40, 400 );
        System.out.println( arr.length() );
        arr.print();
    }
}
java实现无序数组结构的更多相关文章
- Java算法-------无序数组中的最长连续序列---------leetcode128
		Given an unsorted array of integers, find the length of the longest consecutive elements sequence. F ... 
- 对无序数组的并发搜索的java实现
		对无序数组的并发搜索的实现可以充分的用到多cpu的优势 一种简单的策略是将原始数组按照期望的线程数进行分割,如果我们计划使用两个线程进行搜索,就可以把一个数组分成两个,每个线程各自独立的搜索,当其中有 ... 
- java面向对象的有序数组和无序数组的比较
		package aa; class Array{ //定义一个有序数组 private long[] a; //定义数组长度 private int nElems; //构造函数初始化 public ... 
- Java中的数组与集合
		此文转载自:http://student-lp.iteye.com/blog/2082362 在java编程的过程中,我们不能确定某一类型的对象到底会需要多少,为了解决这个问题,java提供了容纳对象 ... 
- Atitit java的异常exception 结构Throwable类
		Atitit java的异常exception 结构Throwable类 1.1. Throwable类 2.StackTrace栈轨迹1 1.2. 3.cause因由1 1.3. 4.Suppres ... 
- 无序数组a,求a[i]-a[j]的最大值,且i<j
		一道面试题:对于无序数组a,求a[i]-a[j]的最大值,其中i<j package test; import java.util.Arrays; public class FindMax { ... 
- 【JAVA零基础入门系列】Day10 Java中的数组
		什么是数组?顾名思义,就是数据的组合,把一些相同类型的数放到一组里去. 那为什么要用数组呢?比如需要统计全班同学的成绩的时候,如果给班上50个同学的成绩信息都命名一个变量进行存储,显然不方便,而且在做 ... 
- Java基础总结--数组
		---数组的定义---组织存储一组数据1.存放相同类型数据的集合--就是一种容器本质上变量也是一种容器--区别就是只存储了一个数据的容器--面对容器,而不是分散的数据eg.买一盘鸡蛋--蛋托其实就是容 ... 
- Java开发知识之Java中的Map结构
		Java开发知识之Java中的Map结构 一丶Map接口 Map没有实现Collection接口,提供的是Key 到Value的映射. Map中.不能包含相同的Key,每个Key只能映射一个Value ... 
随机推荐
- ubuntu18.04LTS设置静态IP
			ubuntu18.04LTS设置静态IP 因为Ubuntu18.04采用的是netplan来管理network.所以在/etc/netplan/目录下有一个以yaml结尾的文件.比如01-networ ... 
- 生成uuid唯一标识符
			generate_uuid: function(){ var d = new Date().getTime(); if(window.performance && typeof win ... 
- Pycharm永久激活方式
			1.首先下载pycharm破解包 http://idea.lanyus.com/ 2. 将下载的文件放入PyCharm安装bin目录下: 3.在pycharm.exe.vmoptions ,pycha ... 
- 多条SQL语句对查询结果集的垂直合并,以及表设计时如何冗余字段
			需求引入 你有一个销售单表A 和一个销售单详情表B 和一个收付款记录表C A---->B 一对多 A---->C一对多 如果一个销售单有两个详情,三条收款记录 对一个销售单 我们想查询 ... 
- Web前端JQuery面试题(一)
			Web前端JQuery面试题(一) 一:选择器 基本选择器 什么是#id,element,.class,*,selector1, selector2, selectorN? 答: 根据给定的id匹配一 ... 
- Python学习笔记【第五篇】:基础函数
			一.函数:函数定义关键字def 后跟函数名称 def 函数名(参数): ... 函数体 ... 返回值 案例: # 定义函数 def say_hei( ... 
- less编译工具——koala使用介绍
			1:使用koala编译软件 官网:http://koala-app.com/index-zh.html (目前官网点击下载没有反应,有人说可能是网络问题,但真正的原因是需要FQ才能下载了) 百度 ... 
- Oracle报错#“ORA-01791: 不是 SELECTed 表达式”解决方法
			今天遇到一个Oracle报错,写篇博客记录一下 简单看一下下面这个sql,这也查询是没报错的 select a.area_seq, a.area_name from t_unit_area a WHE ... 
- FAIR开源Detectron:整合全部顶尖目标检测算法
			昨天,Facebook AI 研究院(FAIR)开源了 Detectron,业内最佳水平的目标检测平台. 昨天,Facebook AI 研究院(FAIR)开源了 Detectron,业内最佳水平的目标 ... 
- 基于python的OpenCV图像1
			目录 1. 读入图片并显示 import cv2 img = cv2.imread("longmao.jpg") cv2.imshow("longmao", i ... 
