zoukankan      html  css  js  c++  java
  • 数组的基本使用

    /*

     数组定义:

     OC:

     有值数组

     NSArray *arr0 = @[@1, @2, @3];

     NSArray *arr1 = [NSArray arrayWithObjects:@1, @2, @3, nil];

     NSLog(@"%@", arr1);

     空数组

     NSArray *arr2 = @[];

     NSArray *arr3 = [NSArray array];

     NSLog(@"%@", arr3);

     不可变数组:NSArray

     可变数组:NSMutableArray

    */

    //有值数组

    var arr0 = [1,2,3]

    var arr1: Array = [1,2,3]

    var arr2: Array<Int> = [1,2,3]

    var arr3: [Int] = [1,2,3]

    // var arr4: Int[] = [1,2,3] // 早期写法 已废弃

    //空数组

    //var arr5 = [] // 已废弃

    var arr6 = [Int]()

    var arr7 = Array<Int>()

    print(arr7)

    //不可变数组

    let arr8 : [Int] = []

    //可变数组

    var arr9 : [String] = [String]()

    /*

     元素类型

     OC:

     NSArray *arr = @[@1, @"lnj", @1.75];

     NSLog(@"%@", arr);

    */

    var arr10 = [1,"hjq",1.65] as [Any]

    print(arr10)

    print(arr10[2])

    // 打印结果:  [1, "hjq", 1.6499999999999999]

    // 1.65

    //如果想明确表示数组中存放的是不同类型的数据, 可以使用Any关键字, 表示数组中可以存放不同类型的数据

    var arr11:Array<Any> = [1,"hjq",1.75]

    print(arr11)

    print(arr11[2])

    // 打印结果:  [1, "hjq", 1.75]

    // 1.75

    /*

     数组操作

     1.获取长度

     OC:

     NSArray *arr = @[@1, @2, @3];

     NSLog(@"%tu", arr.count);

    */

    var arr12 = [1,2,3]

    print(arr12.count)

    /*

     2.判断是否为空

     OC:

     NSArray *arr = @[];

     NSLog(@"%d", arr.count != 0);

    */

    var arr13 = [1,2,3]

    print(arr13.isEmpty)

    /*

     3.检索

     OC:

     NSArray *arr = @[@1, @2, @3];

     NSLog(@"%@", arr[0]);

    */

    var arr14 = [1,2,3,4]

    print(arr14[0])

    /*

     4.追加

     OC:

     NSMutableArray *arr = [NSMutableArray arrayWithObjects:@1, @2, @3, nil];

     [arr addObject:@4];

     NSLog(@"%@", arr);

    */

    var arr15 = [1,2,3]

    arr15.append(4)

    print(arr15)

    var arr16 = [1,2,3]

    arr16 += [4]

    print(arr16)

    arr16 += arr16[0...1] // 也可以借助自己数组元素追加

    print(arr16)

    /*

     5.插入

     OC:

     NSMutableArray *arr = [NSMutableArray arrayWithObjects:@1, @2, @3, nil];

     [arr insertObject:@4 atIndex:0];

     NSLog(@"%@", arr);

    */

    var arr17 = [1,2,3]

    arr17.insert(4, at: 0)

    print(arr17)

    /*

     6.更新

     OC:

     NSMutableArray *arr = [NSMutableArray arrayWithObjects:@1, @2, @3, nil];

     arr[0] = @8;

     NSLog(@"%@", arr);

    */

    var arr18 = [1,2,3]

    arr18[0] = 0

    print(arr18)

    /*

     7.删除

     OC:

     NSMutableArray *arr = [NSMutableArray arrayWithObjects:@1, @2, @3, nil];

     [arr removeObject:@1];

     NSLog(@"%@", arr);

     NSMutableArray *arr = [NSMutableArray arrayWithObjects:@1, @2, @3, nil];

     [arr removeLastObject];

     NSLog(@"%@", arr);

     NSMutableArray *arr = [NSMutableArray arrayWithObjects:@1, @2, @3, nil];

     [arr removeAllObjects];

     NSLog(@"%@", arr);

    */

    var arr19 = [1,2,3]

    arr19.remove(at: 0)

    print(arr19)

    var arr20 = [1,2,3,4]

    arr20.removeLast()

    print(arr20)

    var arr21 = [1,2,3,4]

    arr21.removeFirst()

    print(arr21)

    var arr22 = [1,2,3,4]

    arr22.removeAll(keepingCapacity: true) // 是否保持容量, 如果为true, 即使删除了容量依然存在, 容量是2的倍数

    print(arr22)

    print(arr22.capacity)

    //注意: 如果数组是一个不可变数组不能更新/插入和删除

    //第一个版本的不可变数组是可以修改的

    /*

     Range

     OC:

     NSMutableArray *arr = [NSMutableArray arrayWithObjects:@1, @2, @3, nil];

     [arr removeObjectsInRange:NSMakeRange(0, 2)];

     NSLog(@"%@", arr);

    */

    //移除某区间位置的数组元素

    var arr23 = [1,2,3]

    //arr22.removeRange(Range(start: 0, end: 1)) 2.0写法 已废弃

    arr23.removeSubrange(0...1)

    print(arr23)

    var arr24 = [1,2,3]

    arr24.replaceSubrange(0..<1, with: [8])

    print(arr24)

    // 其实Range就是半闭区间

    var range = 0...5

    //range = 99 // 通过报错可以推断出类型

    print(range) // 通过答应也可以推断出类型

    /// 这个知识点需要再探索一次 range

    //var range1:Range<Int> = 0...5

    //var range2:Range<String>; // 必须遵守ForwardIndexType协议

    // start 起点 end 终点

    //var range3:Range<Int> = Range(start: 0, end: 5)

    //var range4:Range<Int> = 0..<5

    //print(range3)

    //print(range4)

    /*

     数组的批量操作

     OC:

     NSMutableArray *arr = [NSMutableArray arrayWithObjects:@1, @2, @3, nil];

     NSRange range = NSMakeRange(0, 2);

     // [arr replaceObjectsInRange:range withObjectsFromArray:@[@99, @88]];

     [arr replaceObjectsInRange:range withObjectsFromArray:@[@99, @88, @77, @66]];

     NSLog(@"%@", arr);

     */

    var arr = [1,2,3]

    //arr[0...1] = [99,98]

    //arr[0...1] = [99,88,77]

    //等价于上一行代码

    arr.replaceSubrange(0...1, with: [99,88,77])

    print(arr)

    /*

     4.遍历

     OC:

     NSArray *arr = @[@1, @2, @3];

     for (int i = 0; i < arr.count; i++) {

     NSLog(@"%@", arr[i]);

     }

     for (NSNumber *number in arr) {

     NSLog(@"%@", number);

     }

     */

    var arr1 = [1,2,3]

    // 2.0

    //for var i = 0 ; i < arr1.count ; i++

    //{

    //    print(arr1[i])

    //}

    // 3.0

    for i in 0..<arr1.count

    {

        print(arr1[i])

    }

    for number in arr1

    {

        print(number)

    }

    //取出数组中某个区间范围的值

    var arr2 = [1,2,3]

    for number in arr2[0..<3]

    {

        print(number)

    }

  • 相关阅读:
    小朋友学数据结构(2):栈
    小朋友学数据结构(1):约瑟夫环的链表解法、数组解法和数学公式解法
    小朋友学C++(2)
    小朋友学C++(1)
    小朋友学C语言(8)
    小朋友学C语言(7)
    小朋友学C语言(6)
    小朋友学C语言(5):常量和变量,for循环
    小朋友学C语言(4):单精度浮点数与双精度浮点数
    小朋友学C语言(3):整数、浮点数、字符
  • 原文地址:https://www.cnblogs.com/lurenq/p/7364292.html
Copyright © 2011-2022 走看看