第一夜——数组与集合——Arrays

简介

大家好,我是平头哥。今天给大家分享的是java中的数组array。
java中的数组(array)是一种较高级的数据结构类型,它是相同类型变量的集合,可以使用共同的名字对它进行引用。数组可以是一维的,也可以是多维的,我们可以通过数组下标对其中的元素进行访问。

数组的使用

  • 给数组赋值。通过fill方法可以给数组中的某段元素赋上相同值。
  • 对数组排序。通过sort方法对数组中的某段元素排序。
  • 数组比较。通过equals方法比较两个数组,判断数组中的元素值是否相同。
  • 查找数组元素。通过binarySearch方法能对排过序的数组进行二分法查找。

实例代码

import java.util.Arrays;

/**
 * Created by MXi4oyu on 2018/11/4.
 */
public class learn_array {

    /**
     * 整型数组的输出
     * @param array 待输出的数组
     */
    public static void outputArray(int [] array){

        if (array!=null){

            for(int i=0;i<array.length;i++){

                System.out.print(array[i]+"    ");
            }

            System.out.println();
        }
    }

    public static void main(String [] args){

        //1、填充数组,将array0中所有元素的值赋值为1
        int [] array0 = new int[5];

        Arrays.fill(array0,1);
        System.out.println("执行Arrays.fill(array0,1)后,array0中的值为:");
        outputArray(array0);

        //2、给数组赋值,将array0中的第2~3个元素赋值为8
        Arrays.fill(array0,2,4,8);
        System.out.println("执行Arrays.fill(array0,2,4,8)后,array0中的值为:");
        outputArray(array0);

        //3、对数组排序,对数组中的第2~6个元素进行排序
        int [] array1 = new int[]{7,8,3,12,6,3,5,4};
        Arrays.sort(array1,2,7);
        System.out.println("执行Arrays.sort(array1,2,7)后,array1中的值为:");
        outputArray(array1);
        //4、对整个数组进行排序
        Arrays.sort(array1);
        System.out.println("执行Arrays.sort(array1)后,array1中的值为:");
        outputArray(array1);

        //5、比较数组元素是否相等
        System.out.println("array0与array1是否相等:");
        System.out.println(Arrays.equals(array0,array1));

        int [] array2 = (int[]) array1.clone();
        System.out.println("array1与array2是否相等:");
        System.out.println(Arrays.equals(array1,array2));

        //6、使用二分法在数组中查找指定元素所在的下标(数组必须是排好序的,否则结果不正确)
        Arrays.sort(array1);
        System.out.println("元素8在array1中的位置:"+Arrays.binarySearch(array1,8));
        //如果元素不存在数组中,则二分法查找结果为负数
        System.out.println("元素9在array1中的位置:"+Arrays.binarySearch(array1,9));

    }

}

输出结果:

执行Arrays.fill(array0,1)后,array0中的值为:
1    1    1    1    1    
执行Arrays.fill(array0,2,4,8)后,array0中的值为:
1    1    8    8    1    
执行Arrays.sort(array1,2,7)后,array1中的值为:
7    8    3    3    5    6    12    4    
执行Arrays.sort(array1)后,array1中的值为:
3    3    4    5    6    7    8    12    
array0与array1是否相等:
false
array1与array2是否相等:
true
元素8在array1中的位置:6
元素9在array1中的位置:-8

源码解析

  • 使用Arrays的fill方法对数组赋值时,可以指定启始位置begin和终止位置end。这将只给下标在[begin,end)区间的数组元素赋值。注意:下标为end的元素不会被赋值。[begin,end)是半开区间。

  • 使用Arrays的sort方法对数组进行排序时,也可以设定启始位置和终止位置。对区间[begin,end)内的数组进行排序,下标为end的元素不参与排序。sort方法按升序进行排序。

  • 使用Arrays的binarySearch方法在数组中查找元素k时,使用的是二分法,即如果数组中间元素的值比k大时,则只从数组的前半部分元素中查找;否则只从数组的后半部分元素中查找,如此递归下去。因此,必须要求数组元素是按升序排序好的。如果找到了元素k,则返回它的下标值。如果有多个元素k,那么返回的结果可能是这些元素下标值的任意一个,并不一定是第k个元素的下标值。(平头哥表示尼玛,这有啥用?不解)

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 一、集合入门总结 集合框架: Java中的集合框架大类可分为Collection和Map;两者的区别: 1、Col...
    程序员欧阳阅读 13,986评论 2 61
  • 废话不多说,自己进入今天的主题 1、面向对象的特征有哪些方面? 答:面向对象的特征主要有以下几个方面: - 抽象:...
    传奇内服号阅读 7,044评论 1 31
  • 新月如钩霜掠影, 万里银屏, 夜半凉初醒。 玉树伫立风物静, 邻家小院多安宁。 落叶飘零惊雁阵, 犬吠鸡鸣, 三唱...
    黔中吟阅读 2,425评论 0 0
  • 洋老板不姓洋,他以前也不是个老板。 大家叫他洋老板也是毕业之后的事了。毕业之后,屌丝们都在为生计奔波,而洋老板仰仗...
    疯平儿阅读 1,937评论 1 1
  • 在我的记忆中,每到腊月二十四的这一天都是腊月这一个月中最忙碌的日子。从一进腊月开始,妈、大姐、二姐就开始蒸馒头、豆...
    支子花开3阅读 3,720评论 0 0