数组的拷贝、java.util.Arrays类、 Comparable接口

数组的拷贝

System 类里包含了一个static void arraycopy(object src,int srcops,object dest,intdestpos,int length)方法,该方法可以将src数组中的元素赋值给dest数组的元素,其中srcpos 制定从src数组第几个元素开始赋值,length参数指定将src数组的多少元素赋给dest数组的元素。


/*
 * 数组的拷贝:
 *   static void arraycopy(object src,int srcpos,
 *   object dest,int destpos,int length)
 *   object src:被拷贝元素的数组
 *   int srcpos:拷贝数组元素在原数组中的位置
 *   object dest:得到拷贝数组元素的数组
 *   int destpos:拷贝元素在现数组中的位置
 *   int length: 拷贝的数组元素长度
 */
package cn.wu.array;

public class Test04 {
	public static void main(String[] args) {
		String[] t0 = {"关云长","吕奉先","赵子龙","典韦","许仲康"};
		String[] t1 = new String[6];
		System.arraycopy(t0, 0, t1, 0, t0.length);
		for(int i=0;i<t1.length;i++){
			System.out.println(t1[i]);
		}
	}

}

java.util.Arrays类:

JDK提供的java.util.Arrays类。包含了常用的数组操作方便我们日常开发。Arrays类包含了:排序,查找,填充,打印内容等常见的操作。

Arrays.toString()方法:打印数组元素的值:

/*
 * 测试java.util.Arrays类
 *   使用Arrays类输出数组的元素
 */

package cn.wu.array;

import java.util.Arrays;
public class Test05 {
	public static void main(String[] args) {
		int[] a = {1,2};
		System.out.println(a);//打印数组引用的值
		System.out.println(Arrays.toString(a));//打印数组元素的值
		/*此处Arrays.toString()方法是Arrays类的静态方法,
		而不是前面的Object的toString方法*/
	}

}

Arrays.sort()方法:对数组元素进行排序(从小到大)

/*
 * 测试java.util.Array类
 *   使用Arrays类对数组进行排序《一》
 */
package cn.wu.array;

import java.util.Arrays;
public class Test06 {
	public static void main(String[]args){
		int[] a = {1,2,323,23,543,12,59}; //静态初始化
		System.out.println(Arrays.toString(a));//Arrays类对数族元素打印
		Arrays.sort(a);                       //Arrays类对数组元素进行排序
		System.out.println(Arrays.toString(a));//Arrays类对数族元素打印
	}

}

Arrays.binary.search()方法:对数组元素进行二分法查找


/*
 * 测试java,util,Arrays类
 *   使用Arrays类实现数组二分法查找
 */
package cn.wu.array;

import java.util.Arrays;
public class Test07 {
	public static void main(String[]args){
		int[] a = {10,343,5234,33,534,34};
		System.out.println(Arrays.toString(a));
		Arrays.sort(a);//使用二分法必须对数组进行排序
		System.out.println(Arrays.toString(a));
		//返回排序后新的索引位置,若为找到返回负数
		System.out.println("该元素的索引:"+Arrays.binarySearch(a, 343));
	}

}

Arrays.fill(a,2,4,100):对数组元素进行填充


/*
 * 测试java.util.Arrays类;
 *    使用Arrays类对数组进行填充
 */
package cn.wu.array;

import java.util.Arrays;
public class Test08 {
	public static void main(String[] args) {
		int[] a = {13,3234,32,343,23234,23};
		System.out.println(Arrays.toString(a));
		Arrays.fill(a, 2,4,100);//将2到4索引的元素替换为100(2到4等同于【2,4));
		System.out.println(Arrays.toString(a));
	}

}

Comparable接口(imterface,implements):

相对某个类中的对象之间做比较,就需要实现Comparable接口。接口中只有一个方法compareTo(),该方法定义了对象之间的比较规则,一句这个“比较规则”就可以对所有对象的比较’

事实上,java中排序算法的底层也依赖于Comparable接口

Comparable接口中只有一个方法:
public int compareTo(object obj)obj为要做比较的对象;
方法中,将当前对象和obj这个对象进行比较,如果大于返回1,等于返回0,小于返回-1(此处1可以是正整数,-1也可以是负整数)

compareTo方法的代码也比较固定案例如下:

public int compareTo(Object o) { Man man = (Man) o;
if (this.age < man.age) {
return -1;
}
if (this.age > man.age) {
return 1;
}
return 0;
}

/*
 * 测试comparable接口
 * 并使用Arrays类对数组进行排序
 */
package cn.wu.array;

import java.util.Arrays;;
public class Test09 {
	public static void main(String[]args){
		Hero[] h = {            //静态初始化创建数组赋值并分配空间     
				new Hero(20,"Spiderman"),
				new Hero(38,"Batman"),
				new Hero(35,"Superman"),
				new Hero(95,"Captain America")
		};
		Arrays.sort(h);//对数组h用Arrays类的方法进行排序
		System.out.println(Arrays.toString(h));//用Arrays类的方法打印数组h
	}

}
class Hero implements Comparable{//Hero类实现接口Comparable
	int age;
	int id;
	String name;//定义属性;
	public Hero(int age, String name) { //实参构造器
		super();
		this.age = age;
		this.name = name;
	}
	public  String toString(){
		return this.name;
	}
	public int compareTo(Object o){//接口comparable只有的唯一的方法:compareTo()方法
		Hero h = (Hero) o ;   //定义要比较的类的对象
		if(this.age<h.age){    //if-if循环条件比较对象返回int值,
			return -1;
		}if(this.age>h.age){
			return 1;
		}{
			return 0;
		}
	}
	
	
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值