按内部列表的第一个元素对列表进行排序(Java或groovy)
我有一个列表,其中包含一个字符串列表,如按内部列表的第一个元素对列表进行排序(Java或groovy),java,list,sorting,groovy,Java,List,Sorting,Groovy,我有一个列表,其中包含一个字符串列表,如 ["Running Shoes", "Men's Shoes", "Men's Walking Shoes"] ["Team Sports", "Ice Hockey", "Recreational Ice Skates"] ["Pro Sports", "Baseball", "Baseball Gloves", "Adult Gloves"] 我想按子列表中的第一个元素对该列表进行排序,即索引0处的元素。因此,在这个排序后的示例中,“跑鞋”元
["Running Shoes", "Men's Shoes", "Men's Walking Shoes"]
["Team Sports", "Ice Hockey", "Recreational Ice Skates"]
["Pro Sports", "Baseball", "Baseball Gloves", "Adult Gloves"]
我想按子列表中的第一个元素对该列表进行排序,即索引0处的元素。因此,在这个排序后的示例中,“跑鞋”元素将是第一个,然后是“职业体育”元素,最后是“团队体育”
你能给我一些建议或者分享一些代码吗?在Java或Groovy中。在Groovy中:
list.sort { it[0][0] }
如果不想改变原始列表并返回排序后的列表,可以这样做
list.sort(false) { it[0][0] }
好的,p在R之前,所以如果我正确理解了这个问题,顺序应该是“职业运动、棒球”、“跑鞋”和“团队运动”。使用Groovy可以很容易地对其进行排序,如下所示:
[
["Running Shoes", "Men's Shoes", "Men's Walking Shoes"],
["Team Sports", "Ice Hockey", "Recreational Ice Skates"],
["Pro Sports", "Baseball", "Baseball Gloves", "Adult Gloves"]
].toSorted { a, b -> a[0] <=> b[0] }
[
['Pro Sports', 'Baseball', 'Baseball Gloves', 'Adult Gloves'],
['Running Shoes', "Men's Shoes", "Men's Walking Shoes"],
['Team Sports', 'Ice Hockey', 'Recreational Ice Skates']
]
您还可以使用比较器进行长期测试:
class ListComparator implements Comparator<List> {
int compare(List obj1, List obj2) {
obj1[0].compareTo(obj2[0])
}
boolean equals(Object obj) {
this == obj
}
}
[
["Running Shoes", "Men's Shoes", "Men's Walking Shoes"],
["Team Sports", "Ice Hockey", "Recreational Ice Skates"],
["Pro Sports", "Baseball", "Baseball Gloves", "Adult Gloves"]
].toSorted( new ListComparator()) == [
['Pro Sports', 'Baseball', 'Baseball Gloves', 'Adult Gloves'],
['Running Shoes', "Men's Shoes", "Men's Walking Shoes"],
['Team Sports', 'Ice Hockey', 'Recreational Ice Skates']
]
类ListComparator实现Comparator{
int比较(列表obj1,列表obj2){
obj1[0]。比较(obj2[0])
}
布尔等于(对象obj){
this==obj
}
}
[
[“跑鞋”、“男鞋”、“男式步行鞋”],
[“团队运动”、“冰球”、“休闲溜冰鞋”],
[“职业运动”、“棒球”、“棒球手套”、“成人手套”]
].toSorted(新的ListComparator())==[
[‘职业体育’、‘棒球’、‘棒球手套’、‘成人手套’],
[‘跑鞋’、‘男式鞋’、‘男式步行鞋’],
[‘团队运动’、‘冰球’、‘休闲溜冰鞋’]
]
暗示
你得到的选票越来越少,因为你可以通过阅读Groovy的文档来了解这一点。你可以编写一个
比较器并使用集合。排序p
比R
少,所以肯定职业体育
会是第一位的?当然,蒂姆,你是对的。谢谢你的回答,这正是我需要的为什么我的问题被否决了?仇恨者只是仇恨。@user3223841你会被否决,因为问题是你想要什么,而不是你尝试了什么。