Swift中的数组

//MARK:-

//MARK:- 数组的基本使用

/*

1、Swift数组类型是Array,是一个范型集合

2、分为可变数组和不可变数组

*/

//MARK:1、有值数组

    var array0 = [1,2,3]

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

    var array2 : Array<String> = ["dhq","hwj","dhn"]

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

 

//MARK:2、空数组

    var array4  = []

    var array5 = [Int]()

    var array6 = Array<Int>()

    array5.append(12)

    array6.append(23)

    print(array0,array1,array2,array3,array4,array5,array6)

 

//MARK:3、定义一个不可变数组

    let array : [NSObject] = ["ptf",28]

 

//MARK:4、定义混合类型数组

/*

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

*/

    var array7 : [Any] = [2,3,"asdf"]

    print(array7)

 

//MARK:- 

//MARK:- 数组的增删改查

//MARK:1、添加数据

    array2.append("dhq")

    array0 += [4]

    array0 += array0[0...2]

 

//MARK:2、删除数据

    array2.removeLast()

    array2.removeAtIndex(2)

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

    print(array1.capacity)

//MARK:3、修改数据

    array2[1] = "hwjj"

 

//MARK:4、取值

    print(array0)

 

//MARK:5、判断数组是否有值

    print(array2.isEmpty)

 

//MARK:6、插入数据

    array2.insert("daihuiqin", atIndex: 1)

    print(array2)

 

//MARK:-

//MARK:- 数组的遍历:

//MARK:方式一:

    for i in 0..<array2.count{

        print(array2[i])

    }

 

//MARK:方式二:

    for item in array2 {

        print(item)

    }

 

//MARK:方式三:设置遍历区间

    for item in array2[0..<2]{

        print(item)

    }

 

//MARK:方式四:遍历的同时取得下标值

    for(index,name)in array2.enumerate(){

        print(index)

        print(name)

    }

 

//MARK:-

//MARK:- 数组合并:只有相同类型的数组才能合并

    var wArray = ["clh","hjf","wwh"]

    var harray = array2 + wArray

    print(harray)

 

//MARK:-

//MARK:- rang

/*

OC:

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

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

NSLog(@"%@", arr);

*/

    var arr22 = [1, 2, 3]

    arr22.removeRange(Range(start: 1, end: 2))

    print("arr22=\(arr22)")

 

    var arr23 = [1, 2, 3]

    arr23.removeRange(0...0)

    print(arr23)

 

// 其实Range就是半闭区间

    var range = 0...5

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

    print(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(range1)

    print(range3)

    print(range4)

 

//MARK:-

//MARK:- 数组的批量操作

/*

数组的批量操作

OC:

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

NSRange range = NSMakeRange(0, 2);

 

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

NSLog(@"%@", arr);

*/

    var arr = [1, 2, 3]

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

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

    // 等价于上一行代码

    arr.replaceRange(0...1, with: [9,10])

    print(arr)

    arr.replaceRange(Range(start: 0, end: 1),with:[2,4,8])//半闭区间

    print(arr)

 

posted @ 2016-05-04 10:28  skyPeat  阅读(319)  评论(0编辑  收藏  举报