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();
    }

}

原文地址:https://www.cnblogs.com/ghostwu/p/9261122.html

时间: 2024-11-09 05:50:09

java实现无序数组结构的相关文章

对无序数组的并发搜索的java实现

对无序数组的并发搜索的实现可以充分的用到多cpu的优势 一种简单的策略是将原始数组按照期望的线程数进行分割,如果我们计划使用两个线程进行搜索,就可以把一个数组分成两个,每个线程各自独立的搜索,当其中有一个线程找到数据后,立即返回结果的index即可. 首先index需要采用atomicinteger来进行修饰,默认初始化的值为-1,意义为当前未找到,由于内部采用CAS机制,线程在遍历比较是否相等之前,会通过atomicinteger中的get方法拿到当前的值,如果大于等于0,那么说明别的线程已经

java面向对象的有序数组和无序数组的比较

package aa; class Array{ //定义一个有序数组 private long[] a; //定义数组长度 private int nElems; //构造函数初始化 public Array(int max){ a = new long[max]; nElems = 0; } //size函数 public int size(){ return nElems; } //定义添加函数 public void insert(long value){ //将value赋值给数组成员

java常用的数组、字符串、集合操作以及数据结构与算法基本知识

java中常用封装的数组 .字符串. 集合来操作对象,但数据结构中常用的有栈和队列   数与图以及他们之间的排序,查找. 数组声明没有分配内存空间  只有创建或者是初始化时才分配,创建时把数组中的数据类型数据所在的内存空间首地址赋值给数组名,在创建每个对象时,都会给该对象分配地址和它存储的数据 .如变量    int arr[]; int arr[]={1,2,3};  arr=new int[10] ,int arr[][]={{1,9,7},{1,2,3}}  int arr[][]=new

Java基础02-数据结构、List和Set集合

1. 数据结构基础篇 1.1 什么是数据结构 ? ? 数据结构 ? 数据结构就是计算机存储.组织数据的方式 . ? 指的是相互之间存在着特定关系的一种或多种的数据元素集合. 1.2 为什么要学习数据结构? ? 通常情况下,精心选择合适的数据结构可以带来更高的运行或存储的效率. ? 数据结构往往同高效的检索算法和索引技术有关. 1.3 数据结构-栈 栈:栈(stack)又名堆栈,是一种运算受限的线性表. 受限:限定仅在表尾进行插入和删除操作的线性表(这一端被称为栈顶,另一端称为栈底). 栈底和栈顶

无序数组a,求a[i]-a[j]的最大值,且i&lt;j

一道面试题:对于无序数组a,求a[i]-a[j]的最大值,其中i<j 1 package test; 2 3 import java.util.Arrays; 4 5 public class FindMax { 6 public static void main(String[] args) { 7 int[] a = new int[] { 9, 20, 3, 16, 6, 5, 7, 1 }; 8 System.out.println("a[" + a.length + &

【java】解析java中的数组

目录结构: contents structure [-] 一维数组 1,什么是一维数组 2,声明一维数组的三种方式 二维数组 1,什么是二维数组 2,声明二维数组的3种方式 3,二维数组的遍历示例 数组在内存中的空间分配情况 各种数据类型在声明完毕后的默认初始值 解析数组中length属性 java中的数组是对象吗 创建数组对象的模板在哪里 java数组中.lenght属性的来源 参考文章 1,一维数组 1.1 什么是一维数组 一维数组就是在内存连续分配的一段存储空间. 1.2 声明一维数组的三

Java 集合与数组之间的转换

Java 集合与数组之间的转换 @author ixenos 数组转集合 Arrays.asList(T... a) 先给结论:用 Arrays.asList(T... a) 将数组转换成集合 (T...a)是可变参数,看成(T[] a)即可 <T> List<T> asList(T... a) 返回一个受指定数组支持的固定大小的列表,这是披着List外表的纯数组,只是原数组的一个视图(对返回列表的更改会“直接写”到数组.) 返回的列表是可序列化的,并且实现了 RandomAcce

java容器类的继承结构

摘要: java容器类的继承结构 Java容器类库定义了两个不同概念的容器,Collection和Map Collection 一个独立元素的序列,这些元素都服从一条或多条规则.List必须按照插入的顺序保存元素.Set不能有重复元素.Queue按照排队规则来确定对象产生的顺序. (文中Jdk源码版本无特殊说明均为jdk1.8.0_101) public interface Collection<E> extends Iterable<E> { 可以看到,java定义了Collec

Java基础总结--数组

---数组的定义---组织存储一组数据1.存放相同类型数据的集合--就是一种容器本质上变量也是一种容器--区别就是只存储了一个数据的容器--面对容器,而不是分散的数据eg.买一盘鸡蛋--蛋托其实就是容器2.数组可以开始从0自动编号--进而可以通过下标方便的访问每个数据3.数组本质就是对象,数组名就是存储该数组对象的地址,数组的元素相当于对象的成员变量--会被进行默认初始化4.数组声明和初始化格式--*直接声明并初始化(静态初始化方式) int[] arr = {1,2,3};*先创建再初始化 i