对数组的一些基本操作,像排序、搜索与比较等是很常见的。在Java中提供了Arrays类可以协助您作这几个操作,Arrays类位于java.util包中,它提供了几个方法可以直接使用,如表5-2所示。
表5-2 Arrays类提供的几个方法说明
sort() 帮助您对指定的数组排序,所使用的是快速排序法
binarySearch() 让您对已排序的数组进行二元搜索,如果找到指定的值就返回该值所在的索引,否则就返回负值
fill() 当您配置一个数组之后,会依数据类型来给定默认值。例如整数数组就初始为 0,可以使用Arrays.fill()方法将所有的元素设定为指定的值
equals() 比较两个数组中的元素值是否全部相等,如果是将返回true,否则返回 false
以下范例示范了使用Arrays来进行数组的排序与搜索。
ArraysMethodDemo.java
import java.util.Scanner;
import java.util.Arrays;
public class ArraysMethodDemo {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int[] arr = {93, 5, 3, 55, 57, 7, 2 ,73, 41, 91};
System.out.print("排序前: ");
for(int i = 0; i < arr.length; i++)
System.out.print(arr[i] + " ");
System.out.println();
Arrays.sort(arr);
System.out.print("排序后: ");
for(int i = 0; i < arr.length; i++)
System.out.print(arr[i] + " ");
System.out.print("\n请输入搜索值: ");
int key = scanner.nextInt();
int find = -1;
if((find = Arrays.binarySearch(arr, key)) > -1) {
System.out.println("找到值于索引 " +
find + " 位置");
}
else
System.out.println("找不到指定值");
}
}
执行结果:
排序前: 93 5 3 55 57 7 2 73 41 91
排序后: 2 3 5 7 41 55 57 73 91 93
请输入搜索值: 7
找到值于索引 3 位置
一下范例示范了使用Arrays来进行数组的填充与比较。
ArraysMethodDemo2.java
import java.util.Arrays;
public class ArraysMethodDemo2 {
public static void main(String[] args) {
int[] arr1 = new int[10];
int[] arr2 = new int[10];
int[] arr3 = new int[10];
Arrays.fill(arr1, 5);
Arrays.fill(arr2, 5);
Arrays.fill(arr3, 10);
System.out.print("arr1: ");
for(int i = 0; i < arr1.length; i++)
System.out.print(arr1[i] + " ");
System.out.println("\narr1 = arr2 ? " +
Arrays.equals(arr1, arr2));
System.out.println("arr1 = arr3 ? " +
Arrays.equals(arr1, arr3));
}
}
执行结果:
arr1: 5 5 5 5 5 5 5 5 5 5
arr1 = arr2 ? true
arr1 = arr3 ? false
注意,不可以用==来比较两个数组的元素值是否相等,==使用于对象比对时,是用来比对两个对象名称是否引用自同一个对象。一下范例是这个概念的实际示范。
TestArrayValue.java
public class TestArrayValue {
public static void main(String[] args) {
int[] arr1 = {1, 2, 3, 4, 5};
int[] arr2 = {1, 2, 3, 4, 5};
int[] tmp = arr1;
System.out.println(arr1 == tmp);
System.out.println(arr2 == tmp);
}
}
在上面范例中,虽然arr1与arr2中的元素值是相同的,但实际上arr1与arr2是引用自不同的两个数组对象。您将arr1指定给tmp来引用,由于tmp与arr1是引用同一数组对象,所以进行==比较时会显示true;而tmp与arr2是引用自不同数组对象,所以进行==比较时会显示false。执行结果如下:
true
false
在J2SE 5.0中对Arrays类作了不少的修改与功能增加,由此可见数组操作在程序中的重要性。这里介绍Arrays中新增的两个方法:deepEquals()与 deepToString(),如表5-3所示。
表5-3 Arrays类新增的两个方法说明
名 称 说 明
deepEquals() 对数组作深层比较,简单地说,可以对二维仍至三维以上的数组进行比较是否相等
deepToString() 将数组值作深层输出,简单地说,可以对二维仍至三维以上的数组输出其字符串值
以下范例是一个简单示范,它对两个三维数组进行深层比较与深层输出。
NewArraysDemo.java
import java.util.Arrays;
public class NewArraysDemo {
public static void main(String args[]) {
int[][] arr1 = {{1, 2, 3},
{4, 5, 6},
{7, 8, 9}};
int[][] arr2 = {{1, 2, 3},
{4, 5, 6},
{7, 8, 9}};
int[][] arr3 = {{0, 1, 3},
{4, 6, 4},
{7, 8, 9}};
System.out.println("arr1 内容等于 arr2 ? " +
Arrays.deepEquals(arr1, arr2));
System.out.println("arr1 内容等于 arr3 ? " +
Arrays.deepEquals(arr1, arr3));
System.out.println("arr1 deepToString()\n\t" +
Arrays.deepToString(arr1));
}
}
执行结果:
arr1 内容等于 arr2 ? true
arr1 内容等于 arr3 ? false
arr1 deepToString()
[[1, 2, 3], [4, 5, 6], [7, 8, 9]]
当然Arrays并不只有以上介绍的功能。总之,如果之前对Arrays没这么的重视,在J2SE 5.0之后,可以多关照它几眼。如果有数组操作方面的相关需求,可以先查查 java.util.Arrays的API文件说明,看看有没有现成的方法可以使用。
分享到:
相关推荐
Arrays类常用方法.docx
java arrays类
在Java中,Arrays类是一个实用工具类,用于在数组上执行各种操作,包括排序、搜索、比较等。它提供了一组静态方法,以便在数组中进行常见的操作。下面是一个超级详细的介绍Java中Arrays类的常用方法和功能。
day003【String类、static、Arrays类、Math类】.pdf
day08【String类、static、Arrays类、Math类】.pdf
08.【String类、static、Arrays类、Math类】.zip
java的Arrays类的应用.doc
JavaSE034Arrays类解析及数组疑难剖析.docx
1.1. Arrays 类的常用方法 1.2.1. emptyList()/emptyMap()/emptySet() 方法 1.2.7. synchroniz
主要介绍了Java数组高级算法与Arrays类常见操作,结合实例形式总结分析了Java数组常见的排序算法、查找算法相关原理、实现与使用技巧,需要的朋友可以参考下
第一章 String类概述java.lang.String 类代表字符串。Java程序中所有的字符串文字(例如 "abc" )都可以被看作是实现此类的实例。类
文章目录一.BigInteger类概念BigInteger类:构造方法二.BigDecimal类概念BigDecimal类:构造:方法:注意:解决:三.Arrays类概念特点方法四.包装类拆箱和装箱(自动)基本数据类型和字符串之间的转换 一.BigInteger...
主要介绍了Java中Arrays类与Math类,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
Java
主要介绍了java Arrays类详解及实例代码的相关资料,需要的朋友可以参考下
主要介绍了Java多维数组和Arrays类方法总结详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下