数组的操作(一)
来源:互联网 发布:佐川一政 知乎 编辑:程序博客网 时间:2024/06/15 23:53
1. Arrays工具类的使用
Arrays工具类是java提供的操作数组的工具类。此工具类中常用的有数组转换成字符串、数组的扩容、数组的截取、数组元素的排序、数组转换成List等。
参考Arrays API地址:http://tool.oschina.net/apidocs/apidoc?api=jdk-zh
1.1 Arrays.copyOf()
此方法可以用来扩容数组,但是实际上并不是修改了原来数组的长度,而是产生一个副本数组,此数组的长度是新设的长度,而将原来的数组的元素复制到此数组中,其余的位置补相应的0或null等;
static <T> T[] copyOf(T[] original, int newLength)
代码示例:
public static void main(String[] args) { String[] arr = {"js","java","nodejs","phyth","go"}; String[] strings2 = Arrays.copyOf(arr, 10); // 扩容 System.out.println(Arrays.toString(arr)); // [js, java, nodejs, phyth, go] System.out.println(Arrays.toString(strings2)); // [js, java, nodejs, phyth, go, null, null, null, null, null] }
1.2 Arrays.asList()
此方法可以将一个数组转换成List集合。
public static <T> List<T> asList(T... a)
代码示例:
String[] arr = {"js","java","nodejs","phyth","go"};List<String> strings = Arrays.asList(arr); System.out.println(Arrays.toString(arr));// 此处arr是数组[js, java, nodejs, phyth, go] if (strings instanceof List) { System.out.println(strings);//[js, java, nodejs, phyth, go] }
对于”基本类型的数组”使用此方法时,会将整个数组当做一个List的元素,示例代码如下:
int[] i = {1,2,3,4,5};List<int[]> ints = Arrays.asList(i); if (ints instanceof List) { System.out.println(ints); // [[I@74a14482] 此为List中包含一个数组 for (int[] v : ints) { System.out.println(Arrays.toString(v)); //[1, 2, 3, 4] } }
上面这个转换完成后的List中值包含了一个元素即就是i。
1.3 Arrays.copyOfRange()
public static T[] copyOfRange(T[] original,int from,int to)
将指定数组的指定范围复制到一个新数组。该范围的初始索引 ( from) 必须位于 0 和 original.length(包括)之间。 original[from] 处的值放入副本的初始元素中(除非 from == original.length 或 from == to)。原数组中后续元素的值放入副本的后续元素。该范围的最后索引 ( to) (必须大于等于 from)可以大于 original.length,在这种情况下, false 被放入索引大于等于 original.length - from 的副本的所有元素中。返回数组的长度为 to - from。
代码示例:
String[] arr = new String[]{"java","c#","javascript"};String[] strings = Arrays.copyOfRange(arr, 1, 2);System.out.println(Arrays.toString(strings)); // [c#]String[] arr3 = Arrays.copyOfRange(arr,0,4);System.out.println(Arrays.toString(arr3)); // [java, c#, javascript, null]
注意:截取数组片段时含头不含尾,当结束下标大于要截取的数组的长度时默认补null或者0等
2. System.arraycopy()的使用
java.lang.System.arraycopy()
方法复制指定的源数组的数组,在指定的位置开始,到目标数组的指定位置。阵列组件的一个子序列被复制从由src引用的源数组到目标数组引用bydest。复制的组件的数量是相等的length 参数.
组成部分源数组中的位置srcPos到srcPos + length-1复制到的位置的destPos到destPos + length - 1,目标数组。
public static void arraycopy(Object src, int srcPos, Object dest, int destPos, int length)
示例代码:
int[] arr = {1,2,3,4};int[] arr1 = {5,6,7,8,10};int[] ints = Arrays.copyOfRange(arr, 0, arr.length + arr1.length);System.arraycopy(arr1,0,ints,arr.length,arr1.length);System.out.println(Arrays.toString(ints)); // [1, 2, 3, 4, 5, 6, 7, 8, 10]
从源码中可以看见此方法是native修饰的,也就是此方法是使用非Java语言实现的。
3. ArrayUtils工具类
此工具类由org.apache提供:引入包:org.apache.commons.lang.ArrayUtils
这里不再贴上源码,这里有一篇对ArrayUtils的总结(感谢作者):http://www.chongchonggou.com/g_66696904.html
从源码看,此工具中许多方法使用的实现使用的其实是非Java语言。
在使用的过程中慢慢体会这个工具包的好处吧。
- 数组的操作(一)
- Java对数组的操作(一)
- JavaScript数组的某些操作(一)
- Java中数组的操作(一)
- 数据结构(一)---数组的操作
- 数组的基本操作(一)
- Javascript学习笔记之--强大的数组操作(一)
- JavaScript(一)部分数组操作的方法等
- 一维数组的排序操作
- 一维数组的定义和操作
- js数组的简单操作一
- 15周项目一(建立专门的数组类处理有关数组的操作)
- javascript学习(一)数组操作
- 读书笔记:js数组操作总结(一)
- PHP基础数组操作(一)
- NumPy数组(2、数组的操作)
- NumPy数组(2、数组的操作)
- 简单的输入输出、一维数组、二维数组、普通遍历、使用foreach语句遍历数组操作
- intellij-idea-plugin-(插件开发资料)
- linux基础命令介绍九:进程与内存
- Java实现青蛙跳台阶
- Android View基础知识点
- [noip2013] 货车运输(最大生成树+并查集+LCA)
- 数组的操作(一)
- EL表达式
- Android
- Cocoapods 安装(Mac OSX 10.12以后)
- 前端实现图片(img)预加载
- Js apply()和call()使用详解
- 受托支付 与 自主支付
- Kotlin入门系列教程—基本类型 Number
- ffmpeg简介