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;
}
}