Java:Arrays类
Posted 000紫外线000
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java:Arrays类相关的知识,希望对你有一定的参考价值。
java.utl包的Arrays类包含了用来操作数组的各种方法,本Blog就将介绍数组的各种操作。
Arrays类所在包
开头已经说了java.utl包中有Arrays类,所以如果要使用Arrays类的话,就要在开头先导入这个包中的这个类了。
import java.utl.Arrays
Arrays类填充替换数组元素
Arrays.fill(array, value);
Arrays.fill(array, from_index, to_index, value);
其实第一个fill方法很容易理解,就是将array数组的所有数值都赋值为value,就结束了。
而第二种fill方法也只是加了一个范围,即让array[from_index] ~ array[to_index - 1]的所有值赋值为value,这里务必记住这个范围不包含array[to_index]这个数。
package base;
import java.util.Arrays;
public class Arrays_fill
{
public static void main(String[] args)
{
int a[] = new int[10];
Arrays.fill(a, 999);
for (int i = 0; i < a.length; i++)
System.out.print(a[i] + " ");
System.out.println();
Arrays.fill(a, 3, 3 + 4 + 1, 100);
for (int i = 0; i < a.length; i++)
System.out.print(a[i] + " ");
System.out.println();
}
}
Arrays类对数组进行排序
Arrays.sort(array);
Arrays.sort(array, from_index, to_index);
方法很容易理解,第一个方法使用就是直接对数组array进行从小到大的快速排序,而第二个方法只不过是规定了一个范围,即对数组array的array[from_index] ~ array[to_index - 1]进行排序,记住这里是不包含array[to_index]这个数的哟。
package base;
import java.util.Arrays;
public class Arrays_sort
{
public static void main(String[] args)
{
int a[] = {4, 3, 6, 5, 1, 2};
Arrays.sort(a);
for (int i = 0; i < a.length; i++)
System.out.print(a[i] + " ");
System.out.println();
a = new int[]{4, 3, 6, 5, 1, 2};
Arrays.sort(a, 2, 5 + 1);
for (int i = 0; i < a.length; i++)
System.out.print(a[i] + " ");
System.out.println();
}
}
Arrays类复制数组
Arrays.copyOf(array, to_index);
Arrays.copyOfRange(array, from_index, to_index);
第一个方法其实就是返回一个数组,而这个数组就等于数组array的前to_index个数,也就是array[0] ~ array[to_index - 1]。
而第二种方法也只是加了一个初始的位置,即返回一个数组等于array[from_index] ~ array[to_index - 1]。
这里要注意一下,不管是上面哪种使用方法,都务必记住范围是不包含array[to_index]这个数。
package base;
import java.util.Arrays;
public class Arrays_copyOf
{
public static void main(String[] args)
{
int a[] = {4, 3, 6, 5, 1, 2};
int b[] = Arrays.copyOf(a, 4);
int c[] = Arrays.copyOfRange(a, 2, 4 + 1);
for (int i = 0; i < b.length; i++)
System.out.print(b[i] + " ");
System.out.println();
for (int i = 0; i < c.length; i++)
System.out.print(c[i] + " ");
System.out.println();
}
}
Arrays类查询数组
Arrays.binarySearch(array, value);
Arrays.binarySearch(array, from_index, to_index, value);
这里Arrays.binarySearch方法中的数组array必须是从小到大排好序的,这点务必注意,因为其实这个方法是用二分算法实现的。如果你的数组并不是有序的,请先调用Arrays.sort方法对其进行排序,再去二分查找。
这里先说第一行的方法,就是在array数组中去找寻value值最后一次出现所在的索引位置。而如果array数组中根本没有value这个值,会返回一个负数。
再说第二个方法,其实就是加了个搜索的范围,即在array[from_index] ~ array[to_index - 1]中去找寻value值最后一次出现的索引位置,没有找到的话会返回一个负数。这里务必注意,范围是不包含array[to_index]的。
package base;
import java.util.Arrays;
public class Arrays_binarySearch
{
public static void main(String[] args)
{
int a[] = {0, 1, 1, 3, 3, 4, 4, 4, 6, 8}; // 这里a数组必须是有序的,否则无法使用binarySearch。
System.out.println(Arrays.binarySearch(a, 4));
System.out.println(Arrays.binarySearch(a, 5));
System.out.println(Arrays.binarySearch(a, 2, 5 + 1, 3));
System.out.println(Arrays.binarySearch(a, 2, 5 + 1, 8));
}
}
以上是关于Java:Arrays类的主要内容,如果未能解决你的问题,请参考以下文章
15Java常用类(数组工具类Arrays)基本类型包装类(Integer类)正则表达式String的split(String regex)和replaceAll(String regex, (代码片