golang []map[string][string] , 先按大小,再按键名排序

zz/2024/4/19 22:50:53
type IpSortItem struct {Value int    `json:"value"`Name  string `json:"name"`
}
// 
先按数量排序,再按名称排序
func sortIPView(rspData []map[string]string) []*IpSortItem {var totalList []intdataList := make(map[int][]string)for _, value := range rspData {for key2, value2 := range value {num, err := strconv.Atoi(value2)if err != nil {logUtil.Errorf("返回的格式错误%s:%s", key2, value2)}_, ok := dataList[num]if ok == false {dataList[num] = []string{}}dataList[num] = append(dataList[num], key2)if MatchInArrayInt(num, totalList) == false {totalList = append(totalList, num)}}}sort.Sort(sort.Reverse(sort.IntSlice(totalList)))var data []*IpSortItemfor _, value := range totalList {value2, ok := dataList[value]if ok == false {continue}sort.Strings(value2)for _, value3 := range value2 {item := new(IpSortItem)item.Name = value3item.Value = valuedata = append(data, item)}}return data
}// MatchInArray returns true if the given string value is in the array.
func MatchInArrayInt(value int, arr []int) bool {for _, v := range arr {if v == value {return true}}return false
}

http://www.ngui.cc/zz/2700297.html

相关文章

Java eclipse 设置代码折叠

1 windows->perferences->General->Editors->Structured Text Editors 选中Enable folding 效果 2 windows->perferences->Java->Editors->Folding 效果

javac 命令找不到

环境配置出错 仔细的查看每一个配置 复制黏贴的还是出现错误 在自己的电脑中生成的时候错误 仔细查看对比就可以了 使用命令也可以 set java_homeC:\Program Files\Java\jdk1.6.0_26 安装JDK的根目录 set classpath%JAVA_HOME%\lib\tools.jar;%JAVA_HOME%\lib\dt.jar; …

thinkPHP安装与配置

使用Git安装thinkPHP: 1 git clone https://gitee.com/liu21st/thinkphp5.git tp5 ; clone thinkPHP的基础框架 ,tp5为文件名字。 2 切换到tp5目录下在命令行中使用 3 git clone https://gitee.com/liu21st/framework.git thinkphp 4 git checko…

多线程同步I/O和单线程异步I/O

多线程同步I/O和单线程异步I/O 2014-08-24 同步I/O与异步I/O 线程在执行中如果遇到磁盘读写或网络通信(统称IO操作),通常要耗费较长的时间,这时OS会剥夺此线程的CPU控制权,使其暂停执行,同时将资源让给其…

nodejs 调试技巧

1, 命令行调试 run 执行脚本,在第一行暂停 restart 重新执行脚本 cont, c 继续执行,直到遇到下一个断点 next, n 单步执行 step, s 单步执行并进入函数 out, o 从函数中步出 setBreakpoint(), sb() 在当前行设置断点 setBreakpoint(‘f()’), sb(...) 在函数f的第一…

Zookeeper实战之单机集群模式

Zookeeper的单机模式的安装及应用,但是Zookeeper是为了解决分布式应用场景的,所以通常都会运行在集群模式下。由于手头机器不足,所以打算在一台机器上部署三个Zookeeper服务来组成一个Zookeeper集群。这里解压Zookeeper的安装包到/opt目录下&…

ubuntu系统查找命令

ubuntu系统查找命令 一.以文件名查找: 1. find 命令 find / -name "filename" 目的:在根目录“/”开始搜被称为filename的文件,“filename”文件名可以包含通配符(*,?)&#xff0…

kudu 文件描述符 更改

kudu 文件描述符超过阀值 kudu 文件描述符缺省打开文件数为32768 在/etc/security/limits.d/下找到了cloudera的limit配置文件,里面限制为32768 /etc/security/limits.d/cloudera-scm.conf 修改: 32768会覆盖系统配置,cm启动的进程最大打…

同一局域网内的数据库的连接

1、连接他人的数据库 1)保证两台机器存在同一局域网内,即192.168.后的两个字节是相同的。 例如:教师机的IP4地址是192.168.88.100,你应该将自己的IP4地址设置成192.168.88.53. 2)保证教师机的子网掩码与本机相同。 …

杭电acm2020C语言合法标识符

C语言合法标识符想来大家都知道:该字符串只能由下划线、字母和数字组成,其中首字母不能是数字。 此题的难点是输入字符串个数后会多一个回车,我们得用getchar()把它去掉。此外还有getline(cin,s)和gets(s)能输入带空格的字符串。不过用gets(…