值得注意的数组操作
相等
由于数组自身没有重写过equals方法,直接比较数组等同于a==b,并非想要的结果
1 | int[] a = { 1, 2, 3 },b = { 1, 2, 3 }; |
因此如果想使用set尝试来对数组去重是不行的
1 | int[] a = {1,2,3}, b = {1,2,3}; |
Arrays静态比较,标准是数组等长且对应位置相等
1 | public static boolean equals(int[] a, int[] a2) { |
转字符串
1 | int[] a = { 1, 2, 3 }; |
Arrays内部使用StringBuilder循环遍历构建
1 | public static String toString(int[] a) { |
转列表
Arrays提供asList方法,可以转列表
如果传入数组,实际上整个数组被当成整体
1 | int[] a = { 1, 2, 3 }; |
底层实现基于泛型不定参数,泛型把数组作为类型
1 | public static <T> List<T> asList(T... a) { |
转之后发现无法追加数据
1 | List<Integer> b = new ArrayList<Integer>(); |
表面上返回了ArrayList,但这个ArrayList并非常用的那个,而是Arrays内部单独定义的内部类
内部类是个简化版的实现,只实现基本get/set, 无法改动容量
总结
- 使用asList要避免把数组作为参数
- 返回的List是特殊的, 无法进行操作
一分也是爱~
版权声明
This site by Linest is licensed under a Creative Commons BY-NC-ND 4.0 International License.
由Linest创作并维护的博客采用创作共用保留署名-非商业-禁止演绎4.0国际许可证。