Java數組的相關操作
1> 在Java中所有的數組都有一個缺省的屬性length,用于獲取數組元素的個數。
2> 數組的復制: System.arraycopy()。
3> 數組的排序: Arrays.sort()。
4> 在已排序的數組中查找某個元素:Arrays.binarySearch()。
具體的看看下面的2個例子:
code1:
class ArrayTest
{
?public static void main(String[] args)
?{
??/*數組的copy
??int[] num1=new int[]{1,2,3};
??int[] num2=new int[3];
??System.arraycopy(num1,0,num2,0,num1.length);
??for(int i=0;i<num2.length;i++)
??{
???System.out.println(num2[i]);
??}
??*/
??//引用類型的數組copy
??Point[] pts1=new Point[]{new Point(1,1),new Point(2,2),new Point(3,3)};
??Point[] pts2=new Point[3];
??System.arraycopy(pts1,0,pts2,0,pts1.length);
??for(int i=0;i<pts2.length;i++)
??{
???System.out.println("x="+pts2[i].x+","+"y="+pts2[i].y);
??}
??/*
??*因為引用類型傳遞的是引用的拷貝,所以我們修改pts2數組的第二個點的坐標,
??*當我們打印pts1數組的第一個點的坐標時,它的坐標點已經被修改為(5,5)了
??pts2[1].x=5;
??pts2[1].y=5;
??System.out.println("x="+pts1[1].x+","+"y="+pts1[1].y);
??*/
?}
}
class Point
{
?int x, y;
?Point(int x,int y)
?{
??this.x=x;
??this.y=y;
?}
}
code2:
import java.util.*;
class TestArray
{
?public static void main(String[] args)
?{
??/*
??int[] num=new int[]{3,2,1};
??Arrays.sort(num);
??for(int i=0;i<num.length;i++)
??{
???System.out.println(num[i]);
??}
??int index=Arrays.binarySearch(num,3);
??System.out.println("index="+index);
??System.out.println("Element="+num[index]);
??*/
??Student[] ss=new Student[]{new Student("zhangshan",1),
??????????????????????????? new Student("lisi",2),
??????????????????????????? new Student("wangwu",3),
??????????????????????????? new Student("mybole",3)};
?? Arrays.sort(ss);
?? for(int i=0;i<ss.length;i++)
?? {
?? ?System.out.println(ss[i]);
?? }
?? int index=Arrays.binarySearch(ss,new Student("lisi",2));
?? System.out.println("name="+ss[index].name+","+"index="+index);
?}
}
class Student implements Comparable
{
?String name;
?int num;
?Student(String name,int num)
?{
??this.name=name;
??this.num=num;
?}
?public String toString()
?{
??return "name="+name+","+"number="+num;
?}
?public int compareTo(Object o)? //對于Object[]排序要求實現Comparable接口
?{
??Student s=(Student)o;
??//return num>s.num ? 1 :(num==s.num ? 0 : -1);
??int result=num>s.num ? 1 :(num==s.num ? 0 : -1);//按名字排序
??if(0==result)
??{
???result=name.compareTo(s.name);
??}
??return result;
?}
}