Java常用类库:Class Arrays

Java常用类库

1、Class Arrays

1.1、Arrays类的介绍

  Arrays类所继承的父类为Object类,该类所属的包为:java.util.Arrays包,使用该类需要进行导包操作。使用该类的方法可以用于操作数组,比如:排序、搜索、动态扩容等等。

1.2、Arrays类的方法

1.2.1、toString方法

  该方法执行后会返回一个String类型的字符串,使用该方法需要传入一个数组,数组的类型可以有九种:八种基本类型(int、short、long、byte、char、float、double、boolean)和Object类型,作用是:遍历数组中的元素,并将这些元素转换成一个String类型的字符串,格式:[ 元素1, 元素2, ……, 元素n ]。

  以下是java代码:

public class test {
	public static void main(String[] args) {
		int[] i = {1,2,6,8,10,9};
		System.out.println(Arrays.toString(i));		
	}
}

  以下是控制台运行效果图:

在这里插入图片描述

1.2.2、sort方法

  该方法使用后没有返回值,使用该方法是有两种传参数的方法:一种是传一个参数的方法;另一种是传三个参数的方法。传一个参数的方法中该参数是九种类型(int、short、long、byte、char、float、double、boolean、Object)的任何一种数组,作用是:将传入的数组进行升序排序。传三个参数的方法中第一个参数为九种类型的任何一种数组,第二个参数是int类型的参数,第三个参数也是int类型的参数,作用是:将数组中下标为第二个参数的值(包括)到第三参数的值(不包括)该范围的元素进行升序排序。

  注意:两个方法传入的数组中的元素都应该实现Comparable接口,也就是这些元素能进行自然排序(可以比大小),不然会抛出ClassCastException 和IllegalArgumentException 这两个异常。还有第二个方法中传入的第二个参数的值小于0或者是第三个参数的值大于数组的实际长度,会抛出ArrayIndexOutOfBoundsException 该类异常。

  以下是java代码:

public class test {
	public static void main(String[] args) {
		int[] i = {1,5,2,8,10,9};
		System.out.println(Arrays.toString(i));			
		Arrays.sort(i,0,3);
		System.out.println(Arrays.toString(i));	
		Arrays.sort(i);
		System.out.println(Arrays.toString(i));	
	}
}

  以下是控制台运行效果图:

在这里插入图片描述

  从效果图的第二行的输出效果可以看出,sort方法只将数组中下标为0(包括)到3(不包括)之间的元素进行了升序排序,之后的元素的顺序并未改变。

1.2.3、parallelSort方法

  该方法的作用和sort是一样的:用来进行数组的升序排序,但是相较于上面的sort方法的不同之处在于:不仅可以传入上面所说的九种类型的数组,还可以传入自定义类型的数组,就是可以传入自己写的类所构造的数组,但要注意的是自己定义的类型必须实现Comparable接口,不然会抛出上面所说的异常。

  以下是java代码:

public class test {
	public static void main(String[] args) {
		Person p1 = new Person("张三",15);
		Person p2 = new Person("李四",20);
		Person p3 = new Person("王五",18);
		Person p4 = new Person("陈二",25);
		Person p5 = new Person("黄一",6);
		Person[] p = {p1,p2,p3,p4,p5};
		for(int i=0;i<p.length;i++) {
			System.out.println(p[i].getName()+","+p[i].getAge()+"岁");
			
		}
		System.out.println("-----------------------");
		Arrays.parallelSort(p);
		for(int i=0;i<p.length;i++) {
			System.out.println(p[i].getName()+","+p[i].getAge()+"岁");
		}
	}
	static class Person implements Comparable<Person>{
		String name;
		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;
		}

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

		@Override
		public int compareTo(Person o) {
			if(this.age>o.age) {
				return 1;
			}else if(this.age<o.age) {
				return -1;
			}
			return 0;
		}
		
	}
}

  为了方便同一个类里面展示,我把自定义的类定义为了内部类,大家也可以自己定义成外部类,也是可以的。就像上面的代码所展示的效果,我自己定义了一个Person类,该类也实现了Comparable接口,最后几行代码可以看到我重写了该接口中的compareTo方法,该方法就是定义自己写的类的比较规则的方法,我就选择了Person类的age属性来做比较,为什么选这个属性,因为int类型好比较嘛。大家可以看到,compareTo方法有三种返回值:1、-1、0,这三个数值代表什么意思,我来给大家解释,返回1代表着原来传入的值大于新传入的值,返回-1代表原来传入的值小于新传入的值,返回0代表两个值相同。

  以下是控制台运行效果图:

在这里插入图片描述

  大家可以看到效果,分割线以上的是我数组中元素的原来顺序的输出效果,分割线以下是使用了parallelSort方法后排序后的输出效果,年龄由小到大排列。这是传一个参数的,而传三个参数的和sort方法一个道理,就不演示了,代码太长了,大家可以自己去尝试敲一下看看是不是有效果。注意:传三个参数方法,要注意下标越界的异常。

1.2.4、equals方法

  该方法使用后会返回一个boolean类型的值,使用方法可以有两种传参的方式:

  第一种传入两个相同类型的数组,类型可以是九种类型,或者是自定义的类型,但是自定义类型要实现Comparable接口才可以,因为equals方法是将两个数组进行有比较的作用,如果自定义的类不实现Comparable接口,是会报错的,下面我会演示传自定义类型的数组,九种类型的数组,小伙伴自己去尝试,不是很难。

  第二种传入六个参数,第一个是数组,第二个是int类型的参数,第三个int类型的参数,第四个又是一个数组,第五个是int类型的参数,第六个也是int类型的参数,作用是将第一个数组下标为第二个参数的值(包括)到第三个参数的值(不包括)该范围和第二数组下标为第五个参数的值(包括)到第六个参数的值(不包括)该范围进行比较,是否相同。

  以下是java代码:

		Person[] p0 = {p1,p2,p3,p4,p5};
		System.out.println("-----------------------");
		System.out.println(Arrays.equals(p, p0));
		

  类的代码和上面的parallelSort方法的代码一样,就是在main方法加入了这三句,提醒小伙伴,上面的代码是有parallelSort方法的,在实现equals方法时,不要把p数组实现parallelSort方法的,把下面这行代码注释掉,得出的就是p数组和p0数组是相同的,返回true,如果不注释掉,那p数组和p0数组将是不相同的,返回false。

Arrays.parallelSort(p);

  下面是没有注释parallelSort方法的运行图:

在这里插入图片描述

  这是注释了parallelSort方法的运行图:

在这里插入图片描述

  传六个参数的方法就不演示了,小伙伴自己去尝试敲出来,不过还是要注意下标越界的问题。

1.2.5、copyOf​方法

  该方法使用后会返回一个和传入的数组类型一致的数组,使用该方法是要传入两个参数,第一个参数是九种类型或自定义类型的数组,第二个参数是int类型的参数,作用是将数组的长度动态扩容成第二个参数的值的大小。

  以下是java代码:

public class test {
	public static void main(String[] args) {
		int[] i = new int[3];
		System.out.println(i.length);
		i = Arrays.copyOf(i, 10);
		System.out.println(i.length);
	}
}

  以下是控制台运行效果图:

在这里插入图片描述

  由效果图可以看到,i数组的长度从一开始的3扩容成了10,这便是copyOf​方法动态扩容的效果。我只演示int类型的数组,其他类型一个道理,大家可以自己去尝试。

1.2.6、binarySearch​方法

  该方法使用后返回一个int类型的值,使用该方法需传入两个参数,第一个为数组,数组类型可以是九种类型,也可以是自定义类型,但是自定义类型要实现Comparator接口,即要有比较大小的规则,第二个参数是个数组类型一致的参数。作用是:检索数组中是否存在第二个参数,存在返回该参数对应的下标,不存在返回(-(比第二个参数小的元素个数+1))。

  以下是java代码:

public class test {
	public static void main(String[] args) {
		int[] i = {1,2,6,8,10};
		System.out.println(Arrays.binarySearch(i, 2));
		System.out.println(Arrays.binarySearch(i, 4));	
		System.out.println(Arrays.binarySearch(i, 7));		
	}
}

  以下是控制台运行效果图:

在这里插入图片描述

  由效果图可以看出,i数组存在2这个元素,且2元素对应的下标是1,而4元素和7元素,i数组都没有,寻找4元素后的返回值就是(-(小于4的个数+1))=-3,寻找7元素后的返回值就是(-(小于7的个数+1))=-4.

  Arrays类的方法我详细就介绍到这,当然也不止我介绍的这些,还有asList​方法(将数组转化为List集合的方法)、compare​方法(也是进行数组比较的方法)、hashCode​方法(返回数组的哈希码的方法)等等,感兴趣的小伙伴可以自行百度了解。以上就是我所总结关于Arrays的知识点了,感谢大家的阅读。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是Java常用Arrays类的一些函数: 1. `toString()`:将数组转换为字符串并返回。该方法会按照数组的顺序将元素转换为字符串,并用逗号分隔。 ```java int[] arr = {1, 2, 3, 4, 5}; String arrString = Arrays.toString(arr); System.out.println(arrString); // 输出:[1, 2, 3, 4, 5] ``` 2. `sort()`:对数组进行排序。该方法会按照数组元素的自然顺序进行排序,或者可以通过传入自定义的Comparator来指定排序规则。 ```java int[] arr = {5, 3, 1, 4, 2}; Arrays.sort(arr); System.out.println(Arrays.toString(arr)); // 输出:[1, 2, 3, 4, 5] ``` 3. `binarySearch()`:在已排序的数组中使用二分查找算法查找指定元素的索引。如果找到元素,则返回其索引;如果找不到元素,则返回一个负数,表示应该插入元素的位置。 ```java int[] arr = {1, 2, 3, 4, 5}; int index = Arrays.binarySearch(arr, 3); System.out.println(index); // 输出:2 ``` 4. `copyOf()`:复制数组的一部分或整个数组,并返回一个新的数组。可以指定要复制的长度,如果超过原始数组的长度,则用默认值填充。 ```java int[] arr = {1, 2, 3, 4, 5}; int[] newArr = Arrays.copyOf(arr, 3); System.out.println(Arrays.toString(newArr)); // 输出:[1, 2, 3] ``` 5. `fill()`:将数组的所有元素都设置为指定的值。 ```java int[] arr = new int[5]; Arrays.fill(arr, 10); System.out.println(Arrays.toString(arr)); // 输出:[10, 10, 10, 10, 10] ```

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值