第一夜——数组与集合——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个元素的下标值。(平头哥表示尼玛,这有啥用?不解)

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,324评论 6 498
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,356评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,328评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,147评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,160评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,115评论 1 296
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,025评论 3 417
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,867评论 0 274
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,307评论 1 310
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,528评论 2 332
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,688评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,409评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,001评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,657评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,811评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,685评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,573评论 2 353

推荐阅读更多精彩内容

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