操作数组的常见类及方法

数组的排序

1.将一个给定的整形数组转置输出

例如:源数组,1,2,3,4,5,6 

转置之后的数组:6,5,4,3,2,1

解决思路:

简单的使用排序方法解决,例如冒泡排序

  public static void main(String[] args) {
        //冒泡排序
        int[] a={1,2,3,4,5,6};
        int c=0;
        for (int i=1;i<a.length;i++){
           for(int j=0;j<a.length-i;j++){
               if(a[j]<a[j+1]){
                   c=a[j];
                   a[j]=a[j+1];
                   a[j+1]=c;
               }
           }
        }
        for(int i=0;i<a.length;i++) {
            System.out.println(a[i]);
        }
    }
}

但是要记得Java是面向对象的,应该使用封装好的类去解决这个问题

第二个解题思路:

查找与数组有关的类,在API中查到了Arrys类中有个方法叫做sort()它能进行对数组的升序排列,有了升序排列,显然是不行的,看了看没有降序的方法,那么该怎么进行解决呢?

在API中再次查找发现在collections类下有个方法叫做reverse()方法,它能将list集合中的数据进行反转,可以进行使用,先进行对数组的升序排列,再把数组转变为list集合,再使用反转方法,(暂未解决后续更新解决)

2.int[] olderArr={1,3,4,5,0,0,6,6,0,5,4,7,6,7,0,5}

要求将以上数组中的值为0的项去掉,将不为0的值存入下一个新的数组,生成性的数组为:

{1,3,4,5,6,6,5,4,7,6,7,5}

解题思路:

使用循环的中的continue进行跳出存入新的数组

public class Test02 {
    public static void main(String[] args) {
        /**
         * int[] oldArr = {1,3,4,5,0,0,6,6,0,5,4,7,6,7,0,5} ;
         *     要求将以上数组中值为0的项去掉,将不为0的值存入一个新的数组,生成的新数组为:
         *         int[] newArr = {1,3,4,5,6,6,5,4,7,6,7,5} ;
         */
        int[] oldArr = {1,3,4,5,0,0,6,6,0,5,4,7,6,7,0,5};
        int j=0;
        int[] newArr=new int[oldArr.length];
        for (int i=0;i<oldArr.length;i++){
            if(oldArr[i]==0){
                //当oldArr中的值为0是,跳出本次循环
               continue;
            }
            //不为0的值赋给数组newArr
            newArr[j]=oldArr[i];
            j++;//进行下一个新的数组的赋值
        }
        for (int k=0;k<j;k++){
            //特别注意循环中K<j,你新数组存储的值的个数是等于j的,使用newArr.length,没有赋到值会使用0进行填充数组
            System.out.print(newArr[k]+",");
        }
    }
}

遇到的问题:

数组遍历时,数组中未进行赋值的,系统进行了对其填充

3.给出两个数组,数组a:“1,7,9,11,13,15,17,19”,数组b“2,4,6,8,10”对其进行数组合并成为新数组

解题思路:

在API中查找是否有对数组进行拷贝复制的,刚开始在Arrys类中查找到copyof方法,发现对其作用不行

在进行查找,既然有copyof,那就试试有没有Arrycopy数组拷贝方法,我在System中查到了这个方法(ps:英语很重要

public class Test03 {
    public static void main(String[] args) {
        /**
         * 数组a:"1,7,9,11,13,15,17,19"
         *     数组b:"2,4,6,8,10"
         *      两个数组合并为数组c。
         */
        int[] a={1,7,9,11,13,15,17,19};
        int[] b={2,4,6,8,10};
        int[] c=new int[a.length+b.length];
        //复制从a的第一个开始复制,第一个数在数组中的下标为0,写入c,也是从第一个开始,复制长度为a数组的长度
        System.arraycopy(a,0,c,0,a.length);
        //复制从b的第一个开始,但在写入c的时候,应当从c数组的最后一个位置写入,它最后一个位置的下边就是数组的长度,复制长度为b数组长度
        System.arraycopy(b,0,c,a.length,b.length);
        for(int i=0;i<c.length;i++){
            System.out.print(c[i]+",");
        }

    }
}

总结:

操作数组的类一般在API中可以进行查找,此次用到了Arry,Arrylist,Arrys,还有在使用API手册时,最最重要的就是英语的重要性,类名,方法名都是见名知意的。

猜你喜欢

转载自www.cnblogs.com/cainiaosansiwu/p/10754511.html