第九讲 对象的集合教学课件.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Java编程思想 运行结果: Sorted array: [26, 34, 37, 42, 46, 53, 70, 83, 99, 111, 127, 130, 136, 146, 178, 205, 219, 222, 227, 229, 230, 235, 266, 269, 290, 293, 293, 306, 311, 315, 318, 335, 337, 347, 354, 359, 361, 379, 404, 408, 410, 412, 424, 452, 464, 471, 475, 475, 489, 494, 511, 516, 535, 563, 568, 571, 578, 582, 582, 586, 591, 619, 620, 625, 632, 638, 644, 649, 651, 662, 668, 676, 677, 684, 737, 738, 749, 760, 779, 797, 803, 803, 821, 829, 835, 842, 846, 853, 865, 870, 881, 907, 907, 912, 919, 974, 975, 979, 980, 997] Location of 130 is 11, a[11] = 130 Java编程思想 在while循环中随机生成一些值,作为查找的对象,直到找到一个才停止循环。 如果找到了目标,Arrays.binarySearch()的返回值等于或大于0。否则,返回负值,表示为了保持数组的排序状态,此目标元素应该插入的位置。这个负值的计算方式是: -(插入点) - 1 “插入点”是指,第一个大于查找对象的元素在数组中的位置,如果数组所有的元素都小于要查找的对象,“插入点”就等于a.size()。 如果数组包含重复的元素,则无法保证找到的是哪一个。此算法并不是为包含重复元素的数组专门设计的。 Java编程思想 如果使用Comparator排序某个对象数组(基本类型数组无法使用Comparator进行排序),在使用binarySearch()时必须提供同样的Comparator(使用此方法的重载版本)。例如,修改AlphabeticSorting.java程序做这种查询: Java编程思想 运行结果:Index = 10 这里的Comparator必须传递给重载过的binarySearch(),作为其第三个参数。在这个例子中,由于要查找的目标就是从数组中选出来的元素,所以肯定能查找到。 Java编程思想 对数组的小结 数组是效率最高的保存一组对象的方式,它是你的第一选择。而且,如果要保存基本类型,则只能用数组。 写程序的时候并不知道程序运行时会需要多少对象,Java提供了容器类类库,容器基本上分为:List,Set,和Map。 Java的容器类各有特点——例如Set,每个对象只保存一份,Map是一种关联性数组,允许你将任意一个对象与另一个对象关联起来。 同时,Java所有的容器都能够自动调整容量,这与数组不同。可以将任意数量的对象放入其中,所以在写程序的时候不用操心容器需要多大。 Java编程思想 Java编程思想 实现恰当的接口即可制作一个生成器,使用一组内部类来实现基本 类型的生成器接口。 Java编程思想 Java编程思想 运行结果: Java编程思想 11.1.4填充数组 Java标准类库Arrays也有fill()方法,但是它作用有限。只能用同一个值填充各个位置,对于保存对象的数组,就是复制同一个引用进行填充。 使用Arrays2.toString()方法,很容易证明这一点: Java编程思想 Java编程思想 Java编程思想 运行结果: Java编程思想 11.1.5复制数组 Java标准类库提供有 static方法System.arraycopy(),用它复制数组比用for循环复制要快很多。 System.arraycopy()为所有类型作了重载。 下面的例子就是用来处理int数组的: Java编程思想 Java编程思想 Java编程思想 运行结果: Java编程思想 static?voidarraycopy(Object?src, int?srcPos, Object?dest, int?destPos, int?length) ??????????从指定源数组中复制一个数组,复制从指定的位置开始,到目标数组的指定位置结束。 arraycopy()需要的参数有: (1)源数组 (2)表示从源数组中的什么位置开始复制的偏移量 (3)目标数组 (4)表示从目标数组的什么位置开始复制的偏移量 (5)以及需要复制的元素个数。 如果你复制对象数组,那么只是复制了引用——不会出现

文档评论(0)

a13355589 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档