美文网首页
访问和修改Set

访问和修改Set

作者: 一个栗 | 来源:发表于2021-08-08 16:52 被阅读0次

访问 Set

  • 可以使用 For - In 遍历 Set
  • 因为Set 是无序的,如果要顺序遍历 Set,使用 sorted() 方法
let courses:Set = ["Math", "English", "History"]
for course in courses {
    print(course)
}
print("------")
for course in courses.sorted() {
    print(course)
}

执行结果如下:
History
Math
English
------
English
History
Math
  • 使用 count 获取 Set 元素个数
  • 使用 isEmpty 判断 Set 是否为空
let set:Set<Character> = ["A", "B", "C"]
print(set.count)
print(set.isEmpty)

执行结果如下:
3
false

添加元素

  • insert(_:) 添加一个元素到 Set
  • update(with:) 如果已经有相等的元素,替换为新元素。如果Set 中没有,则插入
struct Person {
    var name : String
    var age: Int
}

extension Person: Hashable {
    func hash(into hasher:inout Hasher) {
        hasher.combine(name)
    }
}

extension Person:Equatable {
    static func == (lhs:Person, rhs:Person) -> Bool {
        return lhs.name == rhs.name
    }
}

var personSet:Set = [Person(name: "zhangsan", age: 20)]
personSet.update(with: Person(name: "zhangsan", age: 20))
personSet.update(with: Person.init(name: "wangwu", age: 15))
print(personSet)

执行结果如下:
[__lldb_expr_7.Person(name: "wangwu", age: 15), __lldb_expr_7.Person(name: "zhangsan", age: 20)]

移除元素

  • filter(_:) 返回一个新的Set,新Set 的元素是原始Set 符合条件的元素
var personSet:Set = [Person(name: "zhangsan", age: 28), Person(name: "lisi", age: 29)]
personSet.update(with: Person(name: "zhangsan", age: 38))
personSet.update(with: Person(name: "wangwu", age: 18))
print(personSet.filter{$0.age > 20})

执行结果如下:
[__lldb_expr_12.Person(name: "lisi", age: 29), __lldb_expr_12.Person(name: "zhangsan", age: 38)]
  • remove(_:) 从 Set 当中移除一个元素,如果元素是 Set 的成员就移除它,并且返回移除的值,如果集合每天这个成员,就返回nil
  • removeAll() 移除所有元素
var personSet:Set = [Person(name: "zhangsan", age: 28), Person(name: "lisi", age: 29)]
personSet.update(with: Person(name: "zhangsan", age: 38))
personSet.update(with: Person(name: "wangwu", age: 18))
personSet.remove(Person(name: "zhangsan", age:33))
print(personSet)

执行结果如下:
[__lldb_expr_14.Person(name: "lisi", age: 29), __lldb_expr_14.Person(name: "wangwu", age: 18)]
  • removeFirst() 移除 Set 的第一个元素,因为 Set 是无序的,所以第一个元素并不是放入的第一个元素,而是哈希排布之后的第一个元素。
var personSet:Set = [Person(name: "zhangsan", age: 28), Person(name: "lisi", age: 29)]
personSet.update(with: Person(name: "zhangsan", age: 38))
personSet.update(with: Person(name: "wangwu", age: 18))
personSet.removeFirst()
print(personSet)

执行结果如下:
[__lldb_expr_16.Person(name: "zhangsan", age: 38), __lldb_expr_16.Person(name: "lisi", age: 29)]

相关文章

  • 访问和修改Set

    访问 Set 可以使用 For - In 遍历 Set 因为Set 是无序的,如果要顺序遍历 Set,使用 sor...

  • 27.修改访问器

    1.修改可见性 加上private set之后,就可以修改访问器的可见性 2.修改访问器 切记不要写成this.a...

  • iOS开发 - 「Swift 学习」Sets集合类型创建、编辑

    Swift语言Set集合创建,访问和修改集合(包含、判空、删除、插值) Set用来存储相同类型并且没有确定顺序的值...

  • Swift 5.x Set 访问和修改

    1.遍历 Set 可以使用for-in遍历Set 因为Set是无序的, 如果要顺序遍历Set, 使用sorted(...

  • mysql-黑马-day01

    一、 密码与连接 修改密码:set password = password('xxx'); 授权远程访问: gra...

  • 响应式对象添加

    响应式数据中对于对象新增/删除属性以及数组的下标访问修改和添加数据等的变化观测不到。通过Vue.set以及修改数组...

  • Java学习小记

    Scanner 数组大小用size() 数组访问用get() 数组修改用set() for的遍历 读取文件 写入文...

  • Java 自定义类

    私有属性外部不允许访问 通过set 和get 方法 来修改和获取对应的属性 当传递参数为自定义类对象的时候 传递的...

  • Python入门笔记—第五章(元祖tuple,集合set,字典d

    第五章:元祖tuple,集合set,字典dict 1.元祖—tuple( ) 有序 可以访问,但是不能修改(指内容...

  • GET和SET访问器

    get是读取属性时进行的操作 get是读取属性时进行的操作,set是设置属性时进行的操作。定义一个属性如果只有ge...

网友评论

      本文标题:访问和修改Set

      本文链接:https://www.haomeiwen.com/subject/mmkovltx.html