学习总结-Thinking In Java Chapter 16 arrays
来源:互联网 发布:恐怖美术馆ib知乎 编辑:程序博客网 时间:2024/06/05 19:06
学习总结
本篇是对学习【Java编程思想 第16章 数组】的学习总结。
数组
数组是一种效率最高的存储和随机访问对象引用序列的方式数组标识符
无论使用哪种类型的数组,数组标识符其实只是一个引用,指向在堆中创建的一个真实对象,这个(数组)对象用以保存指向其他对象的引用。“[]”语法是访问数组对象唯一的方式。
int[] a = {1,2,3,4,5};a [3] = 100;
- 初始化
关于聚集初始化和动态聚集初始化
// 聚集初始化,必须在数组定义式使用 BerylliumSphere[] a = { new BerylliumSphere(), new BerylliumSphere(), new BerylliumSphere()}; // 动态聚集初始化,定义和初始化可以分开 BerylliumSphere[] b; b = new BerylliumSphere[]{ new BerylliumSphere(), new BerylliumSphere(), new BerylliumSphere()};
返回数组
在Java中,方法时直接返回“一个数组”,而非数组的引用。当你使用完后,垃圾回收器会清理它。粗糙数组
数组中构成矩阵的每个向量具有不同的长度,成为粗糙数组。
Random rand = new Random(47); int[][][] arr = new int[rand.nextInt(7)][][]; for ( int i = 0; i < arr.length ; i++ ) { arr[i] = new int[rand.nextInt(5)][]; for ( int j = 0; j < arr[i].length ; j++ ) { arr[i][j] = new int[rand.nextInt(7)]; } } System.out.println(Arrays.deepToString(arr));
- 复制数组
// 拷贝数组, // 参数意义:源数组 // 表示从源数组中的什么位置开始复制的偏移量 // 目的数组 // 表示从目的数组中的什么位置开始复制的偏移量 // 复制的元素的个数 System.arraycopy(i, 0, j, 0, i.length);
基本数据类型数组和对象数组都可以复制。然而,如果复制对象数组,那么只是复制对象的引用——而不是对象本身,这被称为浅复制(Shallow Copy)。
- 填充数组
Arrays.fill()
- 数组排序
Arrays.sort()
排序对象需要实现Comparable接口,当然我们可以自定义排序方式,让其实现Comparator接口。
// 系统的ComparatorArrays.sort(s, String.CASE_INSENSITIVE_ORDER);Arrays.sort(a, Collections.reverseOrder());// 自定义的ComparatorArrays.sort(b, new ComparatorTest());
Java标准库中的排序算法针对正排序的特殊类型就行了优化——针对基本类型设计的“快速排序”,以及针对对象设计的“稳定归并排序”。
- 在已排序数组中查找
Arrays.binarySearch()
如果数组是自定义排序的,那么二分查找也需要自定义查找,也就是说需要传入相同的Comparator
Comparator<DataHolder> cmp = Comparator.comparing(DataHolder::getData);//lambda表达式 DataHolder[] datas = new DataHolder[15]; Arrays.sort(datas, cmp); int location = Arrays.binarySearch(datas, datas[5], cmp);
- 判断数组是否相等
Arrays.equals() and Arrays.deepEquals()
- 输出数组
Arrays.toString() and Arrays.deepToString()
阅读全文
1 0
- 学习总结-Thinking In Java Chapter 16 arrays
- 学习总结-Thinking In Java Chapter 19 enumerated
- 学习总结-Thinking In Java Chapter 13 strings
- 学习总结-Thinking In Java Chapter 8 polymorphism
- 学习总结-Thinking In Java Chapter 15 generics
- 学习总结-Thinking In Java Chapter concurrency(1)
- Thinking in java(chapter 2)
- Thinking in java Chapter 1 笔记
- thinking in java chapter 10 exercises
- 《Thinking in Java》总结
- Thinking in Java 2: Arrays.toString vs. Arrays.deepToString
- 学习 thinking in java
- Thinking in java 异常总结
- 《Thinking in java 3th》第一次学习总结
- Thinking in Java --- Chapter 1 (Notes)
- Thinking In Java学习笔记
- Thinking in Java学习笔记
- thinking in java 学习笔记
- 拼凑钱币
- file用法
- Windows下Python快速解决error: Unable to find vcvarsall.bat
- 股票进阶——股票止盈后如何操作才能获取更多收益?
- butterknife:8.6.0使用
- 学习总结-Thinking In Java Chapter 16 arrays
- 数组用法
- 读书笔记-人月神话7
- Cmder安装与使用
- 大富翁游戏
- 众数问题
- BottomTabBar
- 从JDK源码角度看Object
- 自己总结的java标识符