52-HashSet 
HashSet 类型来构造只拥有不重复元素的 Collection。Collection具有遍历元素、添加元素、删除元素,但是没有修改单个元素功能。
HashSet 初始化 
使用HashSet之前需要先导入包
typescript
import std.collection.*然后可以进行初始化了
typescript
let a = HashSet<String>() // Created an empty HashSet whose element type is String
let b = HashSet<String>(100) // Created a HashSet whose capacity is 100
let c = HashSet<Int64>([0, 1, 2]) // Created a HashSet whose element type is Int64, containing elements 0, 1, 2
let d = HashSet<Int64>(c) // Use another Collection to initialize a HashSet
let e = HashSet<Int64>(10, {x: Int64 => (x * x)}) // Created a HashSet whose element type is Int64 and size is 10. All elements are initialized by specified rule function需要注意的是,如果往 HashSet中存入了重复的元素,那么HashSet会自动过滤,如。
typescript
    let c = HashSet<Int64>([0, 1, 2, 2, 2, 2, 2, 2])
    println(c) // [0,1,2]HashSet 访问 
可以通过forin遍历HashSet访问每一个元素,同时它也存在size熟悉,用来获取整个HashSet的长度。
但是需要注意的是,使用forin访问HashSet每一个元素时,它不保证顺序,另外也不能通过下标直接访问HashSet元素。
- 下标访问,错误的示例。 typescript- let c = HashSet<Int64>([0, 1, 2]) println(c[2]) // 下标访问出错
- forin遍历 每一个元素 typescript- let c = HashSet<Int64>([0, 1, 2]) for (val in c) { println(val) }
- size获取HashSet长度 typescript- let c = HashSet<Int64>([0, 1, 2]) println(c.size)
HashSet 增加 
果需要将单个元素添加到 HashSet 里,请使用 put 函数。如果希望同时添加多个元素,可以使用 putAll 函数。
typescript
let mySet = HashSet<Int64>()
mySet.put(0) // mySet contains elements 0
mySet.put(0) // mySet contains elements 0
mySet.put(1) // mySet contains elements 0, 1
let li = [2, 3]
mySet.putAll(li) // mySet contains elements 0, 1, 2, 3HashSet 删除 
从 HashSet 中删除元素,可以使用 remove 函数,需要指定删除的元素。
typescript
let mySet = HashSet<Int64>([0, 1, 2, 3])
mySet.remove(1) // mySet contains elements 0, 2, 3HashSet contains 
可以使用contains方法判定某个元素是否存在于 HashSet中。
typescript
    let c = HashSet<Int64>([0, 1, 2])
    println(c.contains(1)) // true