技术总结数组王惠霞.doc_第1页
技术总结数组王惠霞.doc_第2页
技术总结数组王惠霞.doc_第3页
技术总结数组王惠霞.doc_第4页
技术总结数组王惠霞.doc_第5页
全文预览已结束

VIP免费下载

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

Array(数组)一概要数组是一种数据结构,用来存储同一类型值的集合。通常我们通过一个整数下标来访问数组中的每一个值。Java所有“存储及随机访问一连串对象”的做法,array是最有效的一种。但缺点是:容量固定且无法动态改变,并且无法判断其中实际存有多少元素,length只是告诉我们array的容量。若撰写程序时不知道究竟需要多少对象,需要在空间不足时自动扩增容量,数组就不适用了,此时需要使用集合类(List/Set/Map)。1对Array的访问(for each循环) JDK 5.0增加了一种功能很强的循环结构,可以用来依次处理数组中的每个元素(其他类型的元素集合亦可),而不必为指定下表而分心。这种for循环的语句格式为:for (variable:collection) statement例如:String arr = new String here, there, where;for (String one:arr) System.out.println(one);如果需要处理一个集合中的所有元素的话,“for each”循环语句的改进的确让人省心。然而,在很多情况下,还是需要使用传统的for语句。例如:如果不希望遍历整个集合,或者在循环内部需要操作下标值就需要使用传统的for循环。2数组初始化 在Java中,提供一种创建数组对象并同时赋予初始值的简化书写形式。Int myArr = 1,3,5,7,9,11;甚至还可以初始化一个匿名数组:new int 2,4,6,8,10;在java中,允许数组的长度为0。在编写一个结果为数组的方法时,如果碰巧结果为空,那么这种语法形式就显得非常有用。此时,可以创建一个长度为0的数组:new String0,注意:数组长度为0,与null不同。3 数组拷贝在Java中,允许将一个数组变量拷贝给另一个数组变量。这时,两个变量将因用同一个数组:Int myArrays = yourArrays;myArrays2 = 5; 此时,yourArrays2 的值也是5。如果希望将一个数组中的所有值都拷贝到另一个数组中去,可以使用System.arraycopy()方法。语法格式为:System.arraycopy(from, fromPos, to, toPos, length),数组to必须有足够的空间来存放拷贝的元素。示例:String from = new String sun, here, there, where;String to = new String -, -, -, -,-;System.arraycopy(from, 0, to, 1, 2);for (String one:to) Log.i(to, (one=null)? NULL : one);打印的结果为:-sunhere-4. Java中提供java.util.Arrays类,专门用来操作数组。例如:想对数值型数组进行排序,可以使用这个类。它提供静态sort方法,这个方法使用了优化的快速排序算法。static void sort(type a) /数值型数组排序Arrays类还提供下面一些静态方法,方便我们对数组进行操作。static int binarySearch(type a, type v) /使用二分算法查找vstatic void fill(type a, type v) /将数组的所有元素设置为vstatic Boolean equals(type a, type b) /如果两个数组长度相同,并且下标相同的元素都对应相同,则返回true.5不规则数组Java实际上没有多维数组,只有一维数组。多维数组解释为“数组的数组”。例如:int 76 multiArr = new int76;是分配了包含7个指针的一个数组,然后,指针数组的每一个元素被分配了一个包含6个数值的数组。因为可以单独的存取数组的某一行,所以可以很方便的构造一个“不规则”数组,即数组的每一行有不同的长度。例如:存放一个下三角矩阵。11 21 2 31 2 3 41 2 3 4 51 2 3 4 5 6创建一个不规则的数组,首先要分配一个具有所含行数的数组。final int RMAX = 6;Int odds = new intRMAX;接下来,分配这些行。for(int i=0; i RMAX; i+) oddsi = new inti;在分配了数组之后,假定没有超出边界,就可以采用通常的方式访问其中的元素了。for (int i=0; iodds.length; i+) for (int j=0; j= data.length) return 0; else return dataposition; public void put(int position, Object value) if (position = data.length) int newSize = 2 * data.length; if (position = newSize) newSize = 2 * position; Object newData = new ObjectnewSize; System.arraycopy(data, 0, newData, 0, data.length); data = newData; Log.v(x, Size of dynamic array increased to + newSize); dataposition = value; 使用方法:/* Greate Array */DynamicArray arr = new DynamicArray(); /* Add Integers and Strings */arr.put(0, 123);arr.put(1, Hi There); /* Output Array Content */Log.v(Dynamic Array Test, 0: + arr.get(0) + , 1: + arr.get(1);Java基本类库中也提供ArrayList等类来实现了可变大小的数组。ArrayList存入对象时,抛弃类型信息,所有对象屏蔽为Object,编译时不检查类型,但是运行时会报错。但是:jdk5中加入了对泛型的支持,已经可以在使用ArrayList时进行类型检查。二Android平台上提供的数组的用法1. android 在Resources 中定义arraysAndroid中可以定义数组文件(App/res/vaules/arrays.xml)。redyelloblue string/arr2_one string/arr2_two string/arr2_three drawable/icon1 drawable/icon2 drawable/icon3 2.读取arrays.xml文件Resources res = this.getResources();String arrs = res.getStringArray(R.array.colors);for(String arr:arrs) Log.i(TEST, arr);可以根据需要使用下面几个api来获得需要的arrays资源。public CharSequence getTextArray(int id) throws NotFoundExceptionpublic String getSt

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论