数组排序去重












 

遍历




1.数组遍历用foreach:

       
        int[] arr=new int[10];  // 定义一个长度为10的数组arr
        
        for(int i=0;i<arr.length;i++){
            arr[i]=new Random().nextInt(10);  // 创造一个[0,9]的随机数,for循环10次每次把随机产生的数放到arr数组里
        }
        
        for(int i:arr){
            System.out.print(i+" ");  // foreach循环遍历arr里的数
        }
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11






2.集合遍历用迭代器Iterator或foreach遍历:

       // 方法一(Iterator迭代器)
        // Iterator提供hasNext()和next()方法
        
        List<Integer> scores=new ArrayList<Integer>();
        // 添加元素
        scores.add(100);
        scores.add(20);

        // iterator写法固定,不会改变
        Iterator<Integer> it=scores.iterator();
        while(it.hasNext()){           
            Integer score=it.next();
            System.out.println(score);
        }
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
       // 方法二(foreach遍历)
        
        List<Integer> scores=new ArrayList<Integer>();
        // 添加元素
        scores.add(100);
        scores.add(20);

        //foreach遍历是底层利用迭代器,这种使用非常频繁,简洁
        for(Integer score : scores) {   
            System.out.println(score);
        }
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13





类Arrays()方法:

          Arrays.toString(数组名);//排列数值,按下标排,无升序降序
          Arrays.sort(数组名);//升序排列
          Arrays.copyOf(需要被扩/缩容的数组名,想被扩大到/缩小到的长度);//数组需要扩大或者缩小长度
          Arrays.copyOf(arr,arr.length+arr.length/2);//1.5倍扩容





数组的排序(正序、倒序)和去重

 

正序


        int[] arr=new int[10]; // 定义一个长度为10的数组arr
        for(int i=0;i<arr.length;i++){
            arr[i]=new Random().nextInt(10);  // 创造一个[0,9]的随机数,for循环10次每次把随机产生的数放到arr数组里
        }
        
        for(int i:arr){
            System.out.print(i+" ");  //遍历arr,这时这些值是没有排序的 [乱序]
        }
        System.out.println(); //输出控制台换行,便于观察每次打印数组的值的顺序变化
        Arrays.sort(arr); //利用Arrays类的sort()从小到大排序的方法对arr数组排序
        int[] brr=Arrays.copyOf(arr, arr.length);//利用Arrays类的copyOf方法复制arr数组,便于接下来的倒序操作
        for(int i:brr){  //这时候遍历arr、brr都可以,因为brr是arr的复制品
            System.out.print(i+" "); //遍历brr,这时brr里的排序就为从小到大
        }
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16




倒叙


        for(int i=0;i<brr.length;i++){ //颠倒brr里元素index的位置
            brr[i]=arr[arr.length-1-i];//当i为0,brr第一个元素变为arr最后一个元素
                            //(arr和brr里是一样的内容这时候,因为brr是arr的复制品)
        }
        System.out.println();//输出控制台换行,便于观察每次打印数组的值的顺序变化
        for(int i:brr){
            System.out.print(i+" ");//再次遍历brr,brr就为倒叙了
        }
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10




去重


        System.out.println();//输出控制台换行,便于观察每次打印数组的值的顺序变化
        List<Integer> list=new ArrayList<Integer>();//创建一个list集合对象,类型为Integer
        for(Integer i:brr){  //foreach遍历倒叙的brr
            if(!list.contains(i)){ //利用类List的contain()方法,list对象有没有包含i的值,contain()返回boolean值
                list.add(i); //如果没有包含i,就添加i到list集合中
            }
        }
        for(int i:list){
            System.out.print(i+" "); //遍历list的元素,里面就没有重复的值了,因为没有才添加i的值
        }
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

 

补充

arr数组第一个元素:arr[0]
arr数组最后一个元素:arr[arr.length-1]

枚举(Enum)


public enum TestEnum {
    //枚举类
    //在其他类里访问枚举类对象时,不用实例化,
    //直接就是TestEnum.SPRING、TestEnum.SUMMER、TestEnum.AUTUMN、TestEnum.WINTER、
    SPRING,SUMMER,AUTUMN,WINTER
    //例如:访问TestEnum.SPRING返回的就是本身的内容SPRING
    //例如:访问TestEnum.SPRING.ordinal()返回的就是这里的枚举内容的下标[从0开始]
    ///////////////////SPRING下标为0,SUMMER下标为1,AUTUMN下标为2,WINTER下标为3

}
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
posted @ 2020-03-26 12:12  <小汉>  阅读(540)  评论(0)    收藏  举报