一、数组的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实现无序数组结构的更多相关文章

  1. Java算法-------无序数组中的最长连续序列---------leetcode128

    Given an unsorted array of integers, find the length of the longest consecutive elements sequence. F ...

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

    对无序数组的并发搜索的实现可以充分的用到多cpu的优势 一种简单的策略是将原始数组按照期望的线程数进行分割,如果我们计划使用两个线程进行搜索,就可以把一个数组分成两个,每个线程各自独立的搜索,当其中有 ...

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

    package aa; class Array{ //定义一个有序数组 private long[] a; //定义数组长度 private int nElems; //构造函数初始化 public ...

  4. Java中的数组与集合

    此文转载自:http://student-lp.iteye.com/blog/2082362 在java编程的过程中,我们不能确定某一类型的对象到底会需要多少,为了解决这个问题,java提供了容纳对象 ...

  5. Atitit java的异常exception 结构Throwable类

    Atitit java的异常exception 结构Throwable类 1.1. Throwable类 2.StackTrace栈轨迹1 1.2. 3.cause因由1 1.3. 4.Suppres ...

  6. 无序数组a,求a[i]-a[j]的最大值,且i<j

    一道面试题:对于无序数组a,求a[i]-a[j]的最大值,其中i<j package test; import java.util.Arrays; public class FindMax { ...

  7. 【JAVA零基础入门系列】Day10 Java中的数组

    什么是数组?顾名思义,就是数据的组合,把一些相同类型的数放到一组里去. 那为什么要用数组呢?比如需要统计全班同学的成绩的时候,如果给班上50个同学的成绩信息都命名一个变量进行存储,显然不方便,而且在做 ...

  8. Java基础总结--数组

    ---数组的定义---组织存储一组数据1.存放相同类型数据的集合--就是一种容器本质上变量也是一种容器--区别就是只存储了一个数据的容器--面对容器,而不是分散的数据eg.买一盘鸡蛋--蛋托其实就是容 ...

  9. Java开发知识之Java中的Map结构

    Java开发知识之Java中的Map结构 一丶Map接口 Map没有实现Collection接口,提供的是Key 到Value的映射. Map中.不能包含相同的Key,每个Key只能映射一个Value ...

随机推荐

  1. nodejs异步请求重试策略总结

    对于node开发同学经常要处理异步请求,然后根据请求的结果或请求成功后的状态码做不同的策略处理,众多策略中最常用的一种就是重试策略.针对重试策略我们往往还需要设定一定的规则,如重试次数.重试时间间隔. ...

  2. python jieba库的基本使用

    第一步:先安装jieba库 输入命令:pip install jieba jieba库常用函数: jieba库分词的三种模式: 1.精准模式:把文本精准地分开,不存在冗余 2.全模式:把文中所有可能的 ...

  3. 盘点和反思在微信的阴影下艰难求生的移动端IM应用

    本文原作者:李越,由银杏财经原创发布,本次内容改动. 1.前言 上线一周完成1.5亿元融资,上线10天总激活用户数超400万,8月29日单日新增用户超100万,这是子弹短信交出的最新成绩单(详见< ...

  4. CSS实现div高度自适应

    1.有时候,我们希望容器有一个固定高度,但当其中的内容多的时候,又希望高度能够自适应,也即容器在纵向能被撑开,且如果有背景,也能够自适应.在一般情况下,使用min-height即可解决.但是广大网民的 ...

  5. jupyter notebook的安装与基本操作

    0.前言 最近正在重温Python基础知识,为了方便练习敲代码,于是选择安装jupyter notebook作为代码编辑器. Project Jupyter exists to develop ope ...

  6. 《用Python解决数据结构与算法问题》在线阅读

    源于经典 数据结构作为计算机从业人员的必备基础,Java, c 之类的语言有很多这方面的书籍,Python 相对较少, 其中比较著名的一本 problem-solving-with-algorithm ...

  7. 课程五(Sequence Models),第三周(Sequence models & Attention mechanism) —— 0.Practice questions:Sequence models & Attention mechanism

  8. conda添加多个版本的python

    在conda下,新添加一个python环境,如下再添加一个python3.6conda create --name py36 python=3.6然后通过source activate py36来激活 ...

  9. python通过snmp协议运用多线程获取多台主机网卡信息,写入数据库

    #-*- coding:utf-8 -*- import netsnmp class SnmpClass(object): """ SNMP ""&q ...

  10. UVa OJ 120

    Background背景 Stacks and Queues are often considered the bread and butter of data structures and find ...