• java基础讲解07-----数组


    1.什么是数组

    2.怎么使用数组

    package test;

    public class ShuZu {
            
        public static void main(String[] args) {
            
            /**
             * 1.什么是数组
             *         数组是具有相同数据类型的一组数据的线性集合
             *      使用new 来分配内存空间
             */
            
            //1.初始化一维数组
            int arry[]=new int[]{1,2,3,4};
            int  arry2[]={1,3,5,6};
            //数组的下标是从0开始的    
            for(int i=0;i<arry.length;i++)
            {
                System.out.println(i);
            }
            
            //2.创建二维数组
            int twoArry[][]={{1,2,3},{2,34,4}};
            //遍历二维数组的方法,先循环有几个大数组,在循环小的数组
            for(int i=0;i<twoArry.length;i++) //有两个大的数组
            {
                for(int j=0;j<twoArry[i].length;j++)//小的有3个
                {
                    System.out.print(twoArry[i][j]+"  ");
                }
                System.out.println();//换行
            }
            
            int i=0;
            for(int s[]:twoArry){
                
                i++;
                int j=0;
                for(int g:s)
                {
                    j++;
                    if(i==twoArry.length && j==s.length)
                    {
                        System.out.print(g);
                    }else{
                        System.out.println(g+",");
                    }
                }
            }//第二种方法结束
        
        }
    }
    ***********************************************************************************

    2.数组的常用方法

    package TinkingInJava.chb0;

    import java.util.ArrayList;
    import java.util.Arrays;
    import java.util.HashSet;
    import java.util.List;
    import java.util.Set;

    public class ShuZu {
        /**
         * 数组中常用的方法
         * @param args
         */
        public static void main(String[] args) {
            
            int[] arry={1,3,4,5};
            
            //1.查看数组的长度
            int length=arry.length;
            System.out.println("数组的长度:"+length);
            
            //2.遍历数组
            for (int i = 0; i < arry.length; i++) {
                System.out.print(arry[i]+",");
            }
            System.out.println();
            
            //3.int数组转成string数组
             String arrStrings=Arrays.toString(arry);
             System.err.println("String 数组:"+arrStrings);
            
             //4.数组中是否包含某一个值
             String[] array1={"gg","马云","关羽","刘备","张飞"};
             if(Arrays.asList(array1).contains("gg"))
             {
                 System.out.println("有 gg");
             }else
             {
                 System.out.println("没有");
             }
            
             //5.将数组转成list集合
              ArrayList<String> arrayList=new ArrayList<String>(Arrays.asList(array1));
                System.out.println(arrayList);
            
             //6.将数组转成set集合
            
                String[] array2=new String[]{"黄渤","张艺兴","孙红雷","小猪","牙哥","黄磊"};
                Set<String> set=new HashSet<String>(Arrays.asList(array2));
                System.out.println(set);
                
              //7.将数组转成list集合
            
               List<String> list=new ArrayList<String>();
               for(int i=0;i<array2.length;i++)
               {
                   //array2[i]  是得到数组里面的值,然后一个一个加入到集合里面
                   list.add(array2[i]);
               }
               
               
               //8.数组排序   (里面有个经典的冒泡排序,后面介绍)
               
               int[] arr4 = {3, 7, 2, 1, 9};
               Arrays.sort(arr4);         //.sort(int[] a)   放入数组名字
               for (int i = 0; i < arr4.length; i++) {
                   System.out.println(arr4[i]);
               }
               System.out.println();
            
               //9.复制数组
               int[] arr9={1,2,3,555,5};
               int[] arr91=Arrays.copyOf(arr9, 10);  //指定新数组的长度
               int[] arr8=Arrays.copyOfRange(arr9, 1, 3); //只复制从索引[1]到索引[3]之间的元素(不包括索引[3]的元素)
               
               //10 比较数组
               int[] arr10 = {1, 2, 3, 4,5,6,7,8,9,0};
               int[] arr101 = {1, 2, 3, 4,5,6,7,8,9,0};
               boolean arr102=Arrays.equals(arr10, arr101);
               System.out.println(arr102);
               
               
               //11  去重复
               
               int[] arr11 = {1, 2, 3, 4,5,6,7,8,9,0,3,2,4,5,6,7,4,32,2,1,1,4,6,3};
               //利用set集合的特性   
                 Set<Integer> set2=new HashSet<Integer>();
                 for (int i = 0; i < arr11.length; i++) {
                     set2.add(arr11[i]);
                 }
                 System.out.println(set2);
               
                 int[] arr12 = new int[set2.size()];
                 int j=0;
                 for (Integer i:set2) {
                     arr12[j++]=i;
                 }
                 System.out.println(Arrays.toString(arr12));
                 
                 //12 查询数组中的最大值和最小值
                 
                 int[] a1={1,2,3,4};
                
                //计算数组中的最大是
                //我们先定一个最大值   然后跟其他的值,进行对比,如果比我们规定的一个数大,我们就赋值
                int max=a1[0];  //先假设a1[0]就是1 为最大值
                //遍历数组
                for(int i=0;i<a1.length;i++)
                {
                    if(max<a1[i])  //如果max小于后面的数组 我们就让这个大的值 去覆盖 max这个我们一开始假设的最大值
                    {
                        max=a1[i];
                    }
                }
                System.out.println(max);
                
                
                //最小值也一样的道理
                int min=a1[0];  //先假设a1[0]就是1 为最大值
                //遍历数组
                for(int i=0;i<a1.length;i++)
                {
                    if(min>a1[i])  //如果max大于后面的数组 我们就让这个小的值 去覆盖 min这个我们一开始假设的最小值
                    {
                        min=a1[i];
                    }
                }
                System.out.println(min);
                 
        }

    }

    ***********************************************************************************

    3.数组的排序算法

      数组有多的算法,冒泡,直接选择,反转排序    设计这个算法的目的是为了,方便统计,查询

      1)冒泡排序

        百度下很多,图文并茂的

        冒泡排序,就是把两个挨在一起的两个数(官方说 元素)进行比较,如果满足一定的条件就进行交换,每次交换,都会将最大值或者最小值,排在后面,下次循环对数组的其他数一样的操作

        排序的过程,总是把小的往前放,大的往后放,类似水中的气泡

    package TinkingInJava.chb0;

    import java.util.Arrays;

    public class MaoPao {
        
        public static void main(String[] args) {
            
            //创建·一个数组
            int[] a1={55,12,35,15,2,1,2,55,44};
            Arrays.sort(a1);//数组自带排序
            //创建冒泡排序的对象
            MaoPao m=new MaoPao();  //调用里面的方法
            m.sort(a1);
        }
        
        public void sort(int[] a)
        {
            
                for(int i=1;i<a.length;i++)  //先遍历所以的数组
                {
                        //比较两个相邻的元素。较大的数往后冒泡
                        for(int j=0;j<a.length-i ;j++)  //a.length-i=7   因为最后一个不用排序了
                        {
                            if(a[j]>a[j+1])   // 55 12
                            {
                                int temp=a[j]; //把第一个元素保存到临时变量中
                                a[j]=a[j+1];    //把第二个元素值保存到第一个元素中
                                a[j+1]=temp;    //把临时变量放在第二个元素中
                                
                            }            //开始
                            //没有排序前     55,12,35,15,2,1,2,55,44
                            //第1次排序      12,55,35,15,2,1,2,55,44    1
                            //第2次排序      12,35,55,15,2,1,2,55,44    2
                            //第3次排序      12,35,15,55,2,1,2,55,44    3
                            //第4次排序      12,35,15,2,55,1,2,55,44    4
                            //第5次排序      12,35,15,2,1,2,55,55,44    5
                            //第6次排序      12,35,15,2,1,2,55,55,44    6
                            //第7次排序      12,55,35,15,2,1,2,44,55// 结束   7   可以观察到 55刚好是一条斜线
                            //依次类推
                        }
                }
                show(a);
        }
        
        public void show(int[] b)
        {
            for(int i:b)
            {
                System.out.print(">"+i);
            }
        }

    }

      

  • 相关阅读:
    css3 jQuery实现3d搜索框+为空推断
    simple_pool对象池——优化&lt;二&gt;
    微信支付v3开发(6) 收货地址共享接口
    一个简单的数据增量更新策略(Android / MongoDB / Django)
    cocos2dx 3.0rc怎样创建项目
    NYOJ 613 免费馅饼
    NLP系列(5)_从朴素贝叶斯到N-gram语言模型
    Swift开发图解入门
    java网络编程
    java多线程机制
  • 原文地址:https://www.cnblogs.com/qq3111901846/p/6706834.html
Copyright © 2020-2023  润新知