【发布时间】:2021-12-24 03:56:50
【问题描述】:
我有一个 ArrayList,其中包含字符串格式的 JSONpath 列表,类似于以下内容:
"$['book'][0]['title']"
"$['book'][1]['title']"
"$['book'][2]['title']"
...
"$['book'][10]['title']"
"$['movie']['series'][0]['title']"
"$['movie']['series'][1]['title']"
"$['movie']['series'][2]['title']"
...
"$['movie']['series'][10]['title']"
这里的实际数据不用担心,它是垃圾,最终的结构是带有一系列括号的$,其中括号之间的值有时是字母字符串,有时是数字。
我需要按顺序对这些 ArrayList 项进行排序,如果括号之间的节点在引号中,则按字母顺序排序,但如果在引号之外,则应按数字排序。 IE。顺序应该是:
"$['book'][0]['title']"
"$['book'][1]['title']"
"$['book'][2]['title']"
"$['book'][10]['title']"
"$['movie']['series'][0]['title']"
"$['movie']['series'][1]['title']"
"$['movie']['series'][2]['title']"
"$['movie']['series'][10]['title']"
不是:
"$['book'][0]['title']"
"$['book'][1]['title']"
"$['book'][10]['title']"
"$['book'][2]['title']"
"$['movie']['series'][0]['title']"
"$['movie']['series'][1]['title']"
"$['movie']['series'][10]['title']"
"$['movie']['series'][2]['title']"
我希望我需要为此实现一个自定义比较器,但我无法想出最有效的方法来解析这些字符串并进行排序。有人对此有建议的方法吗?
【问题讨论】:
标签: java sorting comparator