数组常用方法及Arrays工具类的使用_JAVA_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > JAVA > 数组常用方法及Arrays工具类的使用

数组常用方法及Arrays工具类的使用

 2017/5/24 5:32:25  何晓ming  程序员俱乐部  我要评论(0)
  • 摘要:1.System.arraycopy();复制数组,比直接for循环复制要快很多.很多JAVA集合(如List)都会用到此方法扩展容量,性能很高。int[]i1=newint[]{1,2,3,4,5,6,7,8,9,10};int[]i2=newint[10];Arrays.fill(i2,33);//System.arraycopy(资源数组,资源数组位置,目标数组,目标数组位置,复制长度);//目标数组会改变System.arraycopy(i1,3,i2,3,5);System.out
  • 标签:方法 使用 常用 工具 数组

1.System.arraycopy();

复制数组,比直接for循环复制要快很多.

很多JAVA集合(如List)都会用到此方法扩展容量,性能很高。

?

class="java" name="code">int[] i1 = new int[]{1,2,3,4,5,6,7,8,9,10};
		int[] i2 = new int[10];
		Arrays.fill(i2, 33);
		//System.arraycopy(资源数组,资源数组位置,目标数组,目标数组位置 , 复制长度); //目标数组会改变
		System.arraycopy(i1, 3, i2, 3, 5);
		System.out.println(Arrays.toString(i2));
		//[33, 33, 33, 4, 5, 6, 7, 8, 33, 33]

?

?

2.java.util.Arrays类能方便地操作数组,它提供的所有方法都是静态的。具有以下功能:

给数组赋值:通过fill方法。

对数组排序:通过sort方法,按升序。

比较数组:通过equals方法比较数组中元素值是否相等。

查找数组元素:通过binarySearch方法能对排序好的数组进行二分查找法操作。

数组转为字符串:Arrays.toString()方法,可以把各种类型转为字符串,如果是自己定义的实体对象数组就要自己先写好实体类toString()方法.

?

?

import java.util.Arrays;
import java.util.Comparator;

public class ArraysTest {
	public static void output(int[] array) {
		if (array != null) {
			for (int i = 0; i < array.length; i++) {
				System.out.print(array[i] + " ");
			}
		}
		System.out.println();
	}

	public static void main(String[] args) {
		int[] array = new int[5];
		// 填充数组
		Arrays.fill(array, 5);
		System.out.println("填充数组:Arrays.fill(array, 5):");
		ArraysTest.output(array);

		// 将数组的第2和第3个元素赋值为8
		Arrays.fill(array, 2, 4, 8);
		System.out.println("将数组的第2和第3个元素赋值为8:Arrays.fill(array, 2, 4, 8):");
		ArraysTest.output(array);

		int[] array1 = { 7, 8, 3, 2, 12, 6, 3, 5, 4 };
		// 对数组的第2个到第6个进行排序进行排序
		Arrays.sort(array1, 2, 7);
		System.out.println("对数组的第2个到第6个元素进行排序进行排序:Arrays.sort(array,2,7):");
		ArraysTest.output(array1);

		// 对整个数组进行排序
		Arrays.sort(array1);
		System.out.println("对整个数组进行排序:Arrays.sort(array1):");
		ArraysTest.output(array1);

		// 使用Comparator对数组排序(一般用自定义对象的数组)
		Person[] ps = new Person[] { new Person("hhm", 15),
				new Person("DDD", 25), new Person("BBB", 18),
				new Person("CCC", 20) };
		Arrays.sort(ps, new Comparator<Person>() {
			public int compare(Person o1, Person o2) {
				// o2.getAge() - o1.getAge();为降序

				// 升序
				return o1.getAge() - o2.getAge();
			}
		});
		System.out.println(Arrays.toString(ps));

		// 比较数组元素是否相等
		System.out.println("比较数组元素是否相等:Arrays.equals(array, array1):" + "\n"
				+ Arrays.equals(array, array1));
		int[] array2 = array1.clone();
		System.out.println("克隆后数组元素是否相等:Arrays.equals(array1, array2):" + "\n"
				+ Arrays.equals(array1, array2));

		// 使用二分搜索算法查找指定元素所在的下标(必须是排序好的,否则结果不正确)
		Arrays.sort(array1);
		System.out.println("元素3在array1中的位置:Arrays.binarySearch(array1, 3):"
				+ "\n" + Arrays.binarySearch(array1, 3));
		// 如果不存在就返回负数
		System.out.println("元素9在array1中的位置:Arrays.binarySearch(array1, 9):"
				+ "\n" + Arrays.binarySearch(array1, 9));
	}
}

class Person {
	private String name;
	private int age;

	public Person(String name, int age) {
		super();
		this.name = name;
		this.age = age;
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public int getAge() {
		return age;
	}

	public void setAge(int age) {
		this.age = age;
	}

	@Override
	public String toString() {
		return "Person [name=" + name + ", age=" + age + "]";
	}

}

?

?

输出结果

填充数组:Arrays.fill(array, 5):

5 5 5 5 5?

将数组的第2和第3个元素赋值为8:Arrays.fill(array, 2, 4, 8):

5 5 8 8 5?

对数组的第2个到第6个元素进行排序进行排序:Arrays.sort(array,2,7):

7 8 2 3 3 6 12 5 4?

对整个数组进行排序:Arrays.sort(array1):

2 3 3 4 5 6 7 8 12?

[Person [name=hhm, age=15], Person [name=BBB, age=18], Person [name=CCC, age=20], Person [name=DDD, age=25]]

比较数组元素是否相等:Arrays.equals(array, array1):

false

克隆后数组元素是否相等:Arrays.equals(array1, array2):

true

元素3在array1中的位置:Arrays.binarySearch(array1, 3):

1

元素9在array1中的位置:Arrays.binarySearch(array1, 9):

?

-9

?

?

发表评论
用户名: 匿名