我有一个列表,其中包含一个字符串列表,如此...
["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”元素将首先出现,然后是“Pro Sports”元素,最后是“团队运动”。
你能否提供一些指示或分享一些代码?在Java或Groovy中。
答案 0 :(得分:2)
在groovy中:
list.sort { it[0][0] }
如果您不想改变原始列表,并返回已排序的列表,则可以执行
list.sort(false) { it[0][0] }
答案 1 :(得分:2)
嗯,P来自R,所以如果我正确理解问题,顺序将是'Pro Sports,Baseball','Running Shoes'和'Team Sports'。您可以使用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']
]
你正在降票,因为你可以通过阅读Groovy的文档来了解这一点。