小白想问一下关于sort的用法的问题

Programmer1613 · · 802 次点击
刚才的代码错了,手机码字请见谅 ``` stream.Of(12,94,61,98,13,37,15) .Sort(func(n1,n2 int)bool{ return n1<n2 }).Collect() ``` 对象集合的话可以这样 ``` type person struct { name string age int } stream.Sort(func(p1, p2 person) bool { return p1.age < p2.age }).Collect() ```
#4
更多评论
1.在函数f之外可以通过 实现 sort.Interface的三个方法来使 A 具备排序功能,重点重写其 Less 方法。 2.在函数f内部要实现的话,就需要手动写很多代码,对 a 这个slice进行各种操作了,主要思路是通过变换将 每个元素的x,y体现到 slice的index上,然后对slice按照index排序就行了 第一种方案,代码清晰优雅,建议使用。
#1
polaris
社区,需要你我一同完善!
示例: ```go package main import ( "fmt" "sort" ) type User struct { Name string Age int } func main() { Sort() } func Sort() { users := []*User{ {"polaris", 23}, {"studygolang", 29}, {"polaris", 21}, {"studygolang", 27}, {"polaris", 24}, {"studygolang", 25}, } sort.Slice(users, func(i, j int) bool { if users[i].Name == users[j].Name { return users[i].Age < users[j].Age } return users[i].Name < users[j].Name }) for _, user := range users { fmt.Println(*user) } } ``` https://goplay.space/#LrwMQ45tOA
#2