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));
	}
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值