Sorting Information with Comparable -Swift中实例的排序问题
2017-07-28 22:33
316 查看
Comparable 有两个先决条件: 类型要满足Equatable protocol和使用<操作符。
struct Employee: Equatable,Comparable {
var firstname: String
var lastname: String
var title: String
输出:将lastname 排序后输出结果如下
添加Int,可以自由排序(升序或者降序)
struct Employee: Equatable,Comparable {
var firstname: String
var lastname: String
var title: String
var age: Int
static func == (lhs: Employee, rhs: Employee) -> Bool {
return lhs.firstname == rhs.firstname && lhs.lastname == rhs.lastname
&& lhs.title == rhs.title
}
static func < (lhs:Employee, rhs:Employee) -> Bool {
return lhs.age < rhs.age
}
}
let employee1 = Employee(firstname: "Si", lastname: "li", title: "PL", age: 50)
let employee2 = Employee(firstname: "Paul", lastname: "maivd", title: "TL", age: 40)
let employee3 = Employee(firstname: "Lulu", lastname: "ain
4000
", title: "Sales", age: 60)
let employeeall = [employee1,employee2,employee3]
//此处使用的闭包的函数
let employeesorted = employeeall.sorted(by: <)
for employee in employeesorted {
print(employee)
}
输出结果:
Employee(firstname: "Paul", lastname: "maivd", title: "TL", age: 40)
Employee(firstname: "Si", lastname: "li", title: "PL", age: 50)
Employee(firstname: "Lulu", lastname: "ain", title: "Sales", age: 60)
如果将 sorted(by: <) 改为'>'
输出结果将随之发生变化:
Employee(firstname: "Lulu", lastname: "ain", title: "Sales", age: 60)
Employee(firstname: "Si", lastname: "li", title: "PL", age: 50)
Employee(firstname: "Paul", lastname: "maivd", title: "TL", age: 40)
struct Employee: Equatable,Comparable {
var firstname: String
var lastname: String
var title: String
//相同实例的先决条件 static func == (lhs: Employee, rhs: Employee) -> Bool { return lhs.firstname == rhs.firstname && lhs.lastname == rhs.lastname && lhs.title == rhs.title } //排序依据 static func < (lhs:Employee, rhs:Employee) -> Bool { return lhs.lastname < rhs.lastname } } let employee1 = Employee(firstname: "Si", lastname: "li", title: "PL") let employee2 = Employee(firstname: "Paul", lastname: "maivd", title: "TL") let employee3 = Employee(firstname: "Lulu", lastname: "ain", title: "Sales") let employeeall = [employee1,employee2,employee3] //此处使用闭包的函数 - sorted(by:) let employeesorted = employeeall.sorted(by: <) for employee in employeesorted { print(employee) }
输出:将lastname 排序后输出结果如下
Employee(firstname: "Lulu", lastname: "ain", title: "Sales") Employee(firstname: "Si", lastname: "li", title: "PL") Employee(firstname: "Paul", lastname: "maivd", title: "TL")
添加Int,可以自由排序(升序或者降序)
struct Employee: Equatable,Comparable {
var firstname: String
var lastname: String
var title: String
var age: Int
static func == (lhs: Employee, rhs: Employee) -> Bool {
return lhs.firstname == rhs.firstname && lhs.lastname == rhs.lastname
&& lhs.title == rhs.title
}
static func < (lhs:Employee, rhs:Employee) -> Bool {
return lhs.age < rhs.age
}
}
let employee1 = Employee(firstname: "Si", lastname: "li", title: "PL", age: 50)
let employee2 = Employee(firstname: "Paul", lastname: "maivd", title: "TL", age: 40)
let employee3 = Employee(firstname: "Lulu", lastname: "ain
4000
", title: "Sales", age: 60)
let employeeall = [employee1,employee2,employee3]
//此处使用的闭包的函数
let employeesorted = employeeall.sorted(by: <)
for employee in employeesorted {
print(employee)
}
输出结果:
Employee(firstname: "Paul", lastname: "maivd", title: "TL", age: 40)
Employee(firstname: "Si", lastname: "li", title: "PL", age: 50)
Employee(firstname: "Lulu", lastname: "ain", title: "Sales", age: 60)
如果将 sorted(by: <) 改为'>'
输出结果将随之发生变化:
Employee(firstname: "Lulu", lastname: "ain", title: "Sales", age: 60)
Employee(firstname: "Si", lastname: "li", title: "PL", age: 50)
Employee(firstname: "Paul", lastname: "maivd", title: "TL", age: 40)
相关文章推荐
- [BOI2007]名次排序问题(sorting)
- 雇佣问题随机排列数组(permuteBySorting)-c++代码实现及运行实例结果
- 数组排序的Java实现(Sorting of arrays implemented with Java)
- 雇佣问题随机排列数组(permuteBySorting)-c++代码实现及运行实例结果
- java通过Comparable接口实现字符串比较大小排序的简单实例
- 雇佣问题随机排列数组(permuteBySorting)-c++代码实现及运行实例结果
- 雇佣问题随机排列数组(permuteBySorting)-c++代码实现及运行实例结果
- 泛型的排序问题(Collections.sort及Comparable的应用)
- Apply SOA Design Patterns with WCF (4) WCF Database Paging & Sorting (数据库端分页和排序)
- Java Comparable 解决排序问题
- 雇佣问题随机排列数组(permuteBySorting)-c++代码实现及运行实例结果
- Apply SOA Design Patterns with WCF (4) WCF Database Paging & Sorting (数据库端分页和排序)
- 雇佣问题随机排列数组(permuteBySorting)-c++代码实现及运行实例结果
- swift 调用 setValuesForKeysWithDictionary 异常问题
- 雇佣问题随机排列数组(permuteBySorting)-c++代码实现及运行实例结果
- TreeSet中的排序问题——Comparable
- PAT 1067. Sort with Swap(0,*) (25) 整数0到整数N-1的交换排序问题
- 雇佣问题随机排列数组(permuteBySorting)-c++代码实现及运行实例结果
- Java基础之一组有用的类——使用比较器对数组排序(TrySortingWithComparator)
- T-SQL查询: TOP N [PERCENT] WITH TIES ORDER BY 顺序排序实例