ImageVerifierCode 换一换
格式:DOCX , 页数:47 ,大小:260.57KB ,
资源ID:18234837      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/18234837.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(Java数组与容器应用总结Word格式文档下载.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

Java数组与容器应用总结Word格式文档下载.docx

1、equals()比较两个数组是否相等;fill()用某个值填充整个数组;sort()对数组排序;binarySearch()在已经排序的数组中查找元素。1.1数组的初始化基本类型的数组如果是数值型的,就被自动初始化为0;字符型(char)数组被初始化为(char)0;布尔(boolean)数组被初始化为false。非基本类型的对象数组,在新生成一个数组对象时,其中所有的引用被自动初始化为null,所以检查其中的引用是否为null,即可知道数组的某个位置是否存有对象。基本类型的数组,直接存储基本类型数据的值;对象数组,存储指向堆中对象的引用。所有数组(无论它们的元素是对象还是基本类型)都有一个固

2、有成员length,可以通过它获知数组内包含了多少个元素,但不能对其修改。class SimpleClassclass MyArray public static void main(String args)/基本类型数组初始化 int a = new int5;/基本类型数组对象创建,数组元素值被初始化为0 for(int i=0; ia.length; i+) ai = i*i; int b = 1,2,3,4,5;/聚集初始化方式,此时 b.length = 5; int c;/声明而未初始化的局部变量 c = b;/通过数组对象赋值,使c含有与数组b相同的内容,c.length = 5

3、/对象数组初始化 SimpleClass sc;/未初始化的局部变量,如果直接使用编译器会报错 sc = new SimpleClass new SimpleClass(), new SimpleClass();/动态聚集初始化方式,此时sc.length = 2 SimpleClass sc1 = new SimpleClass5;/在栈中生成了一个数组对象sc1,/该数组中的每个元素都是一个指向SimpleClass/对象的引用,此时,并没有SimpleClass对象置/入数组中。sc0sc4 皆为null。 SimpleClass sc2 = new SimpleClass4;for(i

4、nt i=0;sc2.length; if(sc2i = null)/可以测试数组元素是否为null sc2i = new SimpleClass();SimpleClass sc3 = new SimpleClass(), new SimpleClass(), new SimpleClass()/聚集初始化方式,此时sc3.length = 3sc = sc3; /将sc进行赋值,使sc指向另一个数组对象;此时sc.length=3 /现在sc与sc3都指向堆中的同一个数组对象。/多维数组初始化 int a1 = 1, 2, 3, , 4, 5, 6, ,Integer a2 = new I

5、nteger(1), new Integer(2) , new Integer(3), new Integer(4) , new Integer(5), new Integer(6) ,Integer a3;a3 = new Integer3;a3.length; i+) a3i = new Integer3; for(int j=0; j toIndex ArrayIndexOutOfBoundsException - 如果 fromIndex a.length1.3复制数组System.arraycopy()使用System.arraycopy()方法复制数组,比用for循环复制要快很多。

6、int a1 = new int5; int a2 = new int8; Arrays.fill(a1,47);47,47,47,47,47 Arrays.fill(a2,99); /a2:99,99,99,99,99,99,99,99 System.arraycopy(a1,0,a2,0,a1.length); 47,47,47,47,47,99,99,99/填充复制ObjectInteger a3 = new Integer4;Integer a4 = new Integer8;Arrays.fill(a3,new Integer(47); /a3:47,47,47,47Arrays.f

7、ill(a4,new Integer(99);System.arraycopy(a3,0,a4,a4.length/2,a3.length); /a4:99,99,99,99,47,47,47,47方法使用说明:public static void arraycopy(Objectsrc,srcPos, Objectdest,destPos,length)从指定源数组中复制一个数组,复制从指定的位置开始,到目标数组的指定位置结束。从 src 引用的源数组到 dest 引用的目标数组,数组组件的一个子序列被复制下来。被复制的组件的编号等于 length 参数。源数组中位置在 srcPos 到 s

8、rcPos+length-1 之间的组件被分别复制到目标数组中的 destPos 到 destPos+length-1 位置。src - 源数组。srcPos - 源数组中的起始位置。dest - 目标数组。destPos - 目标数据中的起始位置。length - 要复制的数组元素的数量。IndexOutOfBoundsException - 如果复制会导致对数组范围以外的数据的访问。ArrayStoreException - 如果因为类型不匹配而使得无法将 src 数组中的元素存储到 dest 数组中。NullPointerException - 如果 src 或 dest 为 null。

9、1.4数组的比较Arrays.equals()使用Arrays类的equals()方法比较数组。数组相等的条件时元素个数必须相等,并且对应位置的元素也相等,这可以通过对每一个元素使用equals()做比较来判断。对于基本类型,需要使用基本类型的包装类的equals()方法,例如,对于int类型使用Integer.equals()作比较。 int a1 = new int5; int a2 = new int5; Arrays.fill(a2,47); System.out.println(Arrays.equals(a1,a2); /output: true a10 = 5; /a1:5, 4

10、7,47,47,47 /output: false String s1 = new String5; Arrays.fill(s1,Hi /s1: , String s2 = System.out.println(Arrays.equals(s1,s2);1.5数组的排序Arrays.sort()1.5.1基本类型数组的排序基本类型数组的排序,可以直接使用Arrays的sort()方法,按照数字升序进行排序。对String数组排序时,排序算法依据词典顺序排序,大写字母开头的词都会放在前面,然后才是小写字母开头的词。staticvoid sort(inta) /对指定的 int 型数组按数字升序

11、进行排序。a, intfromIndex, inttoIndex) /对指定 int 型数组的指定范围按数字升序进行排序。范例:int a = 2,4,1,3,6,5; /排序前:a:2,4,1,3,6,5 Arrays.sort(a); /排序后:1,2,3,4,5,6 /对于字符串数组是按照“自然顺序”排序,即“字典顺序”String s = cannonaabuseaccuratedeskblockArrays.sort(s); /排序后: s:a, abuse, accurate, block, cannon, deskArrays.sort(s,3,6);/部分排序:s:cannon

12、, a, abuse, accurate, block, deskArrays.sort(s, Collections.reverseOrder();/指定比较器Comparator /逆序排序: desk, cannon, block, accurate, abuse, a1.5.2对象数组的排序针对对象数组中对象进行排序,首要解决的问题是,需要一个可以在两个对象之间进行比较的方法。Java有两种方式提供比较功能。第一种是实现java.lang.Comparable接口。即被比较的对象的类型需要实现Comparable接口,覆盖接口中的CompareTo()方法。Comparable接口定义

13、如下:public interface Comparable int compareTo(To);如果待排序的对象所属的类型实现了上述接口,那么,在调用Arrays类型的以下两种排序方法时,sort会自动去调用CompareTo()方法,完成两个对象之间的比较,最终完成数组的排序。void sort(Objecta)/根据元素的自然顺序对指定对象数组按升序进行排序。toIndex) /根据元素的自然顺序对指定对象数组的指定范围/按升序进行排序。使用范例:import java.util.*;class ElementClass implements Comparable private int

14、 number; public ElementClass(int num) number = num; public int getNumber() return number; public int compareTo(Object obj) return (number (ElementClass)obj).number)?1: (number = (ElementClass)obj).number?0:-1);class CompareTest public static void main(String args) Random rand = new Random(); Element

15、Class ec = new ElementClass5;ec.length; eci = new ElementClass(rand.nextInt(10); System.out.print(eci.getNumber()+ /排序前:3 7 9 5 2 System.out.println(); Arrays.sort(ec);/sort()方法会自动调用ElementClass实现的compareTo函数/排序后:2 3 5 7 9第二种是实现java.util.Comparator接口。得到一个可以对数组中对象进行比较的比较器,然后把这个比较器传递给sort()方法,完成比较与最终的

16、数组排序(基本类型的数组无法用Comparator进行排序)。Comparator接口定义如下:public interface Comparator int compare(To1, To2); /比较用来排序的两个参数。 boolean equals(Objectobj); /指示某个其他对象是否“等于”此 Comparator。Comparator接口中的函数需要同时实现。假设实现的比较器名为MyComparator,其实现形式如下:public MyComparator implements Comparator public int compare(To2) public boole

17、an equals(Objectobj)有了比较器之后,调用下面的sort()方法完成比较与排序:static void sort(Ta, new MyComparator)/根据指定比较器产生的顺序对指定对象数组进行排序。static void sort (TtoIndex, new MyComparator)/根据指定比较器产生的顺序对指/定对象数组的指定范围进行排序。class ElementClassclass MyComparator implements Comparator public int compare(Object obj1, Object obj2) int num1

18、 = (ElementClass)obj1).getNumber(); int num2 = (ElementClass)obj2).getNumber(); return (num1num2 ? 1 : (num1=num2 ? 0 : -1);9 1 7 6 5 Arrays.sort(ec, new MyComparator();/将比较器传递给sort进行排序1 5 6 7 91.6在已排序的数组中查找Arrays.binarySearch()如果数组已经排好序了,可以使用Arrays.binarySearch()执行快速查找。对未排序的数组使用binarySearch()的结果不可预

19、料。如果找到了目标,Arrays.binarySearch()的返回值等于或大于0。否则,返回负值,表示为了保持数组的排序状态,此目标元素应该插入的位置。这个负值的计算方式是:- (插入点) 1“插入点”是指,第一个大于查找对象的元素在数组中的位置,如果所有数组元素都小于要查找的对象,“插入点”就等于a.size()。如果数组包含重复的元素,则无法保证找到的是哪一个。此算法并不是为包含重复元素的数组专门设计的,但是仍然可用。如果使用Comparator排序某个对象数组,在使用binarySearch()时必须提供同样的Comparator。int binarySearch(Objecta, Objectkey)/使用二分搜索法来搜索指定数组,以获得指定对象。toIndex, Objectkey)/使用二分搜索法来搜索指定数/组的范围,以获得指定对象。例如: public int getNumber

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1