Java中数组的相关操作

来源:互联网 发布:js数组删除元素 编辑:程序博客网 时间:2024/05/16 09:42

Java中数组的相关操作

1)  Java中,所有的数组都有一个缺省的属性length,用于获取数组中元素的个数。

2)  数组的复制:System.arraycopy()

3)  数组的排序:Arrays.sort()

4)  在已排序的数组中查找某个元素:Arrays.binarySearch()

数组的复制

对于System.arraycopy可以用来复制一个基本数据类型的数组,也可以复制一个类的对象。如:

int []num1=new int []{2,1,3};

               int []num2=new int[3];

               System.arraycopy(num1,0,num2,0,num1.length);

               Arrays.sort(num2);

复制类的对象:

Student []st1=new Student[]{new Student(1,"zhangshan"),new Student(2,"lisi"),new Student(3,"wangwu"),new Student(3,"qiyuan")};

               Student []st2=new Student[4];

               System.arraycopy(st1,0,st2,0,st1.length);

数组的排序

对于sort,可以直接对基本数据类型的数组进行排序,但对于一个类的对象,则必须实现Comparable接口中的compareTo(Object o)方法,此方法返回一个int 类型的数,根据前者大于、等于和小于相应的返回正数、0和负数。

class 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 st=(Student)o;

              int result=num>st.num?1:(num==st.num?0:-1);

              if(result==0)

              {

                      result=name.compareTo(st.name);

//String类已经实现了Comparable接口,故可以直接调用compareTo方法

              }

              return result;

        }

}

此时可以直接用Arrays.sort(st2);来对st2进行排序。排序的依据是根据Student类的num大小来定,如果num大小相同的,则比较name,再根据name来排序。

数组的查找

int index=Arrays.binarySearch(num2,2);

               System.out.println("index="+index);

               System.out.println("number="+num2[index]);

 

index=Arrays.binarySearch(st2,new Student(1,"zhangshan"));

               System.out.println("index="+index);

               System.out.println("number="+st2[index].num+",name="+st2[index].name);