在Java中,所有的数组都有一个缺省的属性length,用于获取数组中元素的个数。
1. 数组的复制:System.arraycopy()。
如:
int [ ] str1 = new int[ ]{1,2,3};
int[ ] str2 = new int[3]; //指向同一个引用地址
System.arraycopy(str1,0,str2,0,str1.length); //源组数str1,从str1的第1个位置开始,拷贝到目标数组str2中,存放的位置,从str2的第一个位置开始,存放的总共长度是3(也可以用str1.length表示)。
注意:如果是对象数组,或其它引用类型,当目标数组的值发生变化时,源数组的值也发生了变化。
2. 数组的排序:Arrays.sort()。 (在java.util包中)
如:
int[ ] num=new int[ ]{3,1,2};
Arrays.sort(num);
for(int i=0;i<num.length;i++)
{
System.out.println(num[i]); //输出1,2,3,按降序排列。
}
如果参与排序的是对象,则该对象必须实现Comparable 接口,通过方法compareTo来比较对象参与排序的元素。
如下所示:
Student[] ss=new Student[]{new Student(1,"zhangsan"), new Student(2,"lisi"), new Student(3,"wangwu"), new Student(3,"mybole")}; Arrays.sort(ss); for(int i=0;i<ss.length;i++) { System.out.println(ss[i]); } ……………………………… Sclass Student implements Comparable { int num; String name; Student(int num,String name) { this.num=num; this.name=name; } public String toString() { return "number="+num+","+"name="+name; } public int compareTo(Object o) { Student s=(Student)o; // return num>s.num ? 1 : (num==s.num ? 0 : -1); //按对象的num规则排序 //以下表示:如果num相等,则按name排序 int result=num>s.num ? 1 : (num==s.num ? 0 : -1); if(0==result) { result=name.compareTo(s.name); //String已经实现了compareTo方法 } return result; } } |
3. 在已排序的数组中查找某个元素:Arrays.binarySearch()。
如上面所示的:
int index=Arrays.binarySearch(num,3); //得到num数组中的数字 3 的索引
System.out.println("index="+index); //输出2
System.out.println("element="+num[index]); //3