对照Java学习Swift--集合类型

来源:互联网 发布:nero软件是否收费 编辑:程序博客网 时间:2024/05/22 03:49

数组
Java里面的数组,创建了以后的大小是不能改变的,只能往里面去存储数据,有两个方式创建数组:

String[] array = new String[10];
String[] array1 = {“aa”,”bb”,”cc”};
我们创建了两个String数组,一个大小为10,每个元素为null的数组,一个3个元素的数组。
Swift的数组则灵活的多,我们先来看创建数组:

var someStrings = String//创建一个空数组
var strings = [String](count: 3, repeatedValue:”“)//创建三个元素,每个元素为”“的数组
var shoppingList = [“Eggs”, “Milk”]//创建两个元素的数组
swift中数组是非常灵活的,数组可以相加,插入新元素,删除元素,Java则不可以,我们看下例子:

var shoppingList = [“Eggs”, “Milk”]
shoppingList += [“Baking Powder”]
shoppingList += [“Chocolate Spread”, “Cheese”, “Butter”]
shoppingList[4…5] = [“Bananas”, “Apples”]
shoppingList.insert(“Maple Syrup”, atIndex: 0)
let mapleSyrup = shoppingList.removeAtIndex(0)
let apples = shoppingList.removeLast()
最后我们看下数组的遍历,分两种方式:

for item in shoppingList {
print(item)
}

for (index, value) in shoppingList.enumerate() {
print(“Item (String(index + 1)): (value)”)
}
一种可以获取元素,另一个还可以获得索引和元素

集合(Sets)
Java和Swift中的Set都是存储相同类型并且没有确定顺序的值,Java中Set是通过接口暴露出来,实现类包括HashSet,TreeSet等。Swift中对Set的操作跟Java差不多,就创建有些不同:

var letters = Set();
var favoriteGenres: Set = [“Rock”, “Classical”, “Hip hop”]
创建以后对Set的操作,无非就是方法的调用,大家可以去试试,应该很简单的。
但是有一点,是Swift有而Java没有的,就是Swift可以对集合进行基本操作,比如把两个集合组合到一起,判断两个集合共有元素,或者判断两个集合是否全包含,部分包含或者不相交。

使用intersect(_:)方法根据两个集合中都包含的值创建的一个新的集合。
使用exclusiveOr(_:)方法根据在一个集合中但不在两个集合中的值创建一个新的集合。
使用union(_:)方法根据两个集合的值创建一个新的集合。
使用subtract(_:)方法根据不在该集合中的值创建一个新的集合。
我们看下例子:

let oddDigits: Set = [1, 3, 5, 7, 9]
let evenDigits: Set = [0, 2, 4, 6, 8]
let singleDigitPrimeNumbers: Set = [2, 3, 5, 7]

oddDigits.union(evenDigits).sort() // [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
oddDigits.intersect(evenDigits).sort() // []
oddDigits.subtract(singleDigitPrimeNumbers).sort() // [1, 9]
oddDigits.exclusiveOr(singleDigitPrimeNumbers).sort() // [1, 2, 9]
应该比较简单,大家可以尝试下。
还有一点就是swift有集合成员关系和相等:

使用“是否相等”运算符(==)来判断两个集合是否包含全部相同的值。
使用isSubsetOf(_:)方法来判断一个集合中的值是否也被包含在另外一个集合中。
使用isSupersetOf(_:)方法来判断一个集合中包含另一个集合中所有的值。
使用isStrictSubsetOf(:)或者isStrictSupersetOf(:)方法来判断一个集合是否是另外一个集合的子集合或者父集合并且两个集合并不相等。
使用isDisjointWith(_:)方法来判断两个集合是否不含有相同的值(是否没有交集)。

我们看下例子:

let houseAnimals: Set = [“a”, “b”]
let farmAnimals: Set = [“c”, “d”, “e”, “a”, “b”]
let cityAnimals: Set = [“f”, “g”]

houseAnimals.isSubsetOf(farmAnimals)
// true
farmAnimals.isSupersetOf(houseAnimals)
// true
farmAnimals.isDisjointWith(cityAnimals)
// true
可以看到,Swift的集合还是要比Java的集合强大许多。

字典
字典是一种存储多个相同类型的值的容器
Java中也有Dictionary这个类,不过以我的经验来看,用的很少,大部分用的是HashMap如果是线程安全的话就用Hashtable。
Swift中Dictionary的创建与使用跟Set差不多,只是语法不同:

var namesOfIntegers = Int: String
var airports = [“YYZ”: “Toronto Pearson”, “DUB”: “Dublin”]
其他方面包括增加,删除,修改,遍历到时没什么,就是对各种方法的使用而已,大家可以自行联系,很简单的。

http://www.voidcn.com/blog/lovexieyuan520/article/p-5693175.html

0 0