![](/img/trans.png)
[英]Java: how to create a list cons that accepts lists for the first element
[英]Sorting a list of lists by the first element of inner list (Java or 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”元素將是第一個,其次是“ Pro Sports”元素,最后一個是“團隊競技'。
有人可以指點一下還是共享一些代碼? 在Java或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']
]
您之所以落選,是因為您可以閱讀Groovy的文檔來學習。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.