内容来源:链接: Java数组的基本操作
遍历数组元素
使用for循环或foreach语句
//使用for循环
public class Traverse{
public static void main(String args[]){
int data[] = new int[]{0,1,2,3,4,5};
for (int k=0;k<data.length;k++){
System.out.println("第"+(k+1)+"个元素为"+data[k]);
}
}
}
//使用foreach语句
public class Traverse{
public static void main(String args[]){
int data[] = new int[]{0,1,2,3,4,5};
for (int k : data){
System.out.println(k);
}
}
}
填充替换数组元素
数组中的元素定义完成后,可通过Arrays类的静态方法fill()来对数组中的元素进行替换。该方法通过各种重载形式可完成对任意类型的数组元素的替换。fill()方法有两种参数类型。
1、fill(int[ ]a,int value)
该方法可将指定的int值分配给int型数组的每一个元素。
import java.util.Arrays;
public class Fill{
public static void main(String[] args) {
int[] data = new int[]{1,2,3};
Arrays.fill(data, 6);
for (int k=0;k<data.length;k++){
System.out.println("第"+(k+1)+"个元素为"+data[k]);
}
}
}
2、fill(int []a, int fromIndex, int toIndex, int val);
该方法将指定的int值分配给int型数组指定范围中的每个元素。填充的范围从索引fromIndex(包括)一直到索引toIndex(不包括)。如果fromIndex==toIndex,则填充范围为空。
import java.util.Arrays;
public class Fill{
public static void main(String[] args) {
int data[]=new int[]{0,1,2,6,6,6};
Arrays.fill(data,0,3,6);
for (int k=0;k<data.length;k++){
System.out.println("第"+(k+1)+"个元素为"+data[k]);
}
}
}
如果指定的索引位置大于或等于要进行填充的数组的长度,则会报出ArrayIndexOutOfBoundsException(数组越界异常)异常。
数组排序
通过Arrays类的静态sort()方法可以实现对数组的排序。sort方法提供了多种重载形式,可对任意类型的数组进行升序排序。
Arrays.sort(object);
import java.util.Arrays;
public class Sort{
public static void main(String[] args) {
int data[]=new int[]{4,0,3,6,5,7,2};
Arrays.sort(data);
for (int k=0;k<data.length;k++){
System.out.println("第"+(k+1)+"个元素为"+data[k]);
}
}
}
数组拷贝
Arrays类的copyOf()方法与copyOfRange()方法可以实现对数组的复制。
copyOf()方法是复制数组至指定长度。copyOfRange()方法是将指定数组的指定长度复制到一个新数组中。
1、copyOf()方法
该方法提供了多种重载形式,用于满足不同类型数组的复制。
copyOf(arr,int newlength)
import java.util.Arrays;
public class Copy{
public static void main(String[] args) {
int data[]=new int[] {1,2,3};
int newdata[]=Arrays.copyOf(data,5);
for (int k=0;k<newdata.length;k++){
System.out.println("第"+(k+1)+"个元素为"+newdata[k]);
}
}
}
2、copyOfRange()方法
该方法同样提供了多种重载形式。
copyOfRange(arr, int fromIndex, int toIndex);
同样包括fromIndex,不包括toIndex。
import java.util.Arrays;
public class Copy{
public static void main(String[] args) {
int data[]=new int[] {1,2,3,4,5};
int newdata[]=Arrays.copyOfRange(data,1,3);
for (int k=0;k<data.length;k++){
System.out.println("第"+(k+1)+"个元素为"+newdata[k]);
}
}
}
3、System.arraycopy方法
将源数组中指定段拷贝到目标数组的指定段
System.arraycopy(源数组,源开始索引,目标数组,目标开始索引,拷贝长度)
public class Copy{
public static void main(String[] args) {
int data1[] = new int[] {0,1,2,3,4,5};
int data2[] = new int[4];
System.arraycopy(data1,1,data2,0,4);
for (int k=0;k<data1.length;k++){
System.out.println("data1第"+(k+1)+"个元素为"+data1[k]);
}
for (int k=0;k<data2.length;k++){
System.out.println("data2第"+(k+1)+"个元素为"+data2[k]);
}
}
}
数组查找
Arrays类的binarySearch()方法,可使用二分搜索法来搜索指定数组 ,以获得指定对象。该方法返回要搜索元素的索引值。binarySearch()方法提供了多种重载形式,用于满足各种类型数组的查找需要。binarySearch()方法有两种参数类型。
1、binarySearch(Object [ ],Object key)
import java.util.Arrays;
public class Search{
public static void main(String[] args) {
int arr[]=new int[] {4,25,10};
Arrays.sort(arr);
int index=Arrays.binarySearch(arr,25);
System.out.println(index);
}
}
必须在进行此调用之前对数组进行排序(通过sort()方法)。如果没有对数组进行排序,则结果是不确定的。如果数组包含多个带有指定索引值的元素,则无法保证找到的是哪一个。
2、binarySearch(Object [ ],int fromIndex,int toIndex,Object key)
该方法在指定的范围内检索某一元素。
import java.util.Arrays;
public class Search{
public static void main(String[] args) {
String strArr[]=new String[] {"ab","cd","ef","gh"};
Arrays.sort(strArr);
int index=Arrays.binarySearch(strArr, "ef");
System.out.println("ef的索引位置是:"+index);
}
}