Java编程思想笔记(十六)——数组

感悟

虽然容器的出现弱化了数组,数组仍有很大的价值,尤其在效率方面。本章是数组基础,同时也是下一章容器深入研究的基础,重要要理解数组的构成和方法。

笔记
  • 16.1 数组为什么特殊
1)效率、类型、保存基本类型能力
2)容器加入泛型后,数组与ArrayList容器差别不大,包装类型的出现也使得容器可以保存基本类型,仅剩效率优势。
  • 16.2 数组是第一级对象
介绍了数组对象的唯一length属性,数据标识仅是引用,初始化基本类型的数组,自动初始化值
  • 16.3 返回一个数组
对比C++可以直接返回一个数组,使用完毕后,垃圾回收器会清理,如果还需要,数组会继续存在。
  • 16.4 多维数组
介绍了创建多维数组,以及Arrays.deepToString打印方法,以及结合包装器使得Integer和String也同样方便。
  • 16.5 数组与泛型
1)不能实例化具有参数化类型的数组,但是可以定义如List<String>[] ls;
2)可以参数化数组本身类型,泛型方法,泛型类
3)可以定义泛型数组,然后创建非泛型数组将其转型,不过泛型容器是比泛型数组更好的选择
4)因为擦除,所以没法创建泛型数组,使用转型的模式不是动态的检查类型,会被编译器和运行时检查类型。
  • 16.6 创建测试数据
    1)Arrays.fill()
    2)数据生成器
    3)从Generator中创建数组
1、介绍了单一数值填充Arrays.fill()
2、结合策略设计模式和反射,使用Generator生成不同数据
3、提供了ConvertTo将包装类型数组转化成基本类型数组,最后完成了一个通用数组生成器
  • 16.7 Arrays实用功能
    1)复制数组
    2)数组的比较
    3)数组元素的比较
    4)数组排序
    5)在已排序的数组中查找
1、数组浅复制方法iSystem.arraycopy()
2、Arrays.equals() 比较两个数组是否完全相等,如果是对象,每个对象调用Object.equals()
3、实现Comparable接口的compareTo()方法,可以直接用于Arrays.sort()(默认小到大),带上Comparator接口可以改变排序方式,如Collections.reverseOrder()可以反序或String.CASE_INSENSITIVE_ORDER忽略大小写字符。甚至可以自己实现Comparator接口 的compare()equals()方法,(其中equals非必须)进行自定义排序。
4、排好序后,可以使用Arrays.binarySearch()进行数组快速查找,不建议在没排序基础上查找。同时如果有指定Comparator也需要一起传入。
  • 16.8 总结
    随着Java版本对容器升级改进,除了性能之外数组都没有优势,除非容器性能出现瓶颈才考虑数组优化,但不得否认数组的存在有一定意义。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值