第十六章:数组

数组的特殊性

数组与其他种类的容器的区别:效率、类型和保存基本类型的能力。其他容器在处理对象时,都是当做Object处理,而数组可以去持有某种具体类型,通过编译期检查可以防止错误类型使用。

数组是第一级对象

length是数组大小,而不是实际保存的元素个数。创建数组对象时,所有引用被自动初始化为null,数值为0,字符型为(char)O,布尔为false。
多维数组

数组与泛型

不能实例化具有参数化类型的数组:

Peel<Banana>[] peels = new Peel<Banana>[10];

但可以参数化数组本书的类型:

public T[] f(T[] arg){return arg;}

java允许创建泛型数组的引用, 然后创建非泛型的数组,将其转型:

List<String>[] ls;
List[] la = new List[10];
ls = (List<String>) la; // unchecked warning
ls[0] = new ArrayList<String>();
//Compile-time checking produces an error:
// ! ls[1] = new ArrayList<Integer>();

//如果你要直接生成一个泛型数组,抛出一个Unchecked warning
List<BerylliumSphere>[] spheres = (List<BerylliumSphere>[]) new List[10];

填充数组

  1. Arrays.fill(array, value):使用同一个值填充各个位置。
  2. 数据生成器Generator(next)

复制数组

System.arraycopy(源数组,开始复制位置,目标数组,目标复制开始位置,复制个数),比for循环快递。

比较数组

Arrays类提供了重载后的equals()方法,用来比较整个数组(元素个数相等,对应位置的元素也相等)。
java有两种方式提供比较功能,一是java.lang.Comparable接口(compareTo(obj)),当前对象小于返回负值,等于返回0,大于返回正值。
二是Comparator接口( equals()和compare(obj1, obj2)方法 )

数组排序

Arrays.sort( array, Comparable | Comparator)(基本数据类型数组无法使用Comparator进行排序)
在已排序的数组中查找使用Arrays.binarySearch(array, 比较器)执行快速查找,返回index。
找到目标,返回值大于等于0,否则,产生负返回值,表示若要保持数组的排序状态此目标元素所应该插入的位置,负值的计算方式:-(插入点)-1,插入点指第一个大于查找元素在数组中的位置。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 一、基本数据类型 注释 单行注释:// 区域注释:/* */ 文档注释:/** */ 数值 对于byte类型而言...
    龙猫小爷阅读 4,307评论 0 16
  • 从三月份找实习到现在,面了一些公司,挂了不少,但最终还是拿到小米、百度、阿里、京东、新浪、CVTE、乐视家的研发岗...
    时芥蓝阅读 42,420评论 11 349
  • java笔记第一天 == 和 equals ==比较的比较的是两个变量的值是否相等,对于引用型变量表示的是两个变量...
    jmychou阅读 1,552评论 0 3
  • 阴暗房间逃不过蛛网的墙角 回忆翻到了那篇 却找不到昔日的喧嚣 不断挣脱夜幕笼罩 试图寻找阳光的照耀 羡慕球场上孩子...
    苏沐七阅读 953评论 0 0
  • 我们一起走过千山万水,一起走过无数条喧嚣寂静的街道,到最后,也不过只是为了一次挥手再见。 1 8年时间,依旧如故,...
    璞墨西塘阅读 745评论 0 49