lambda - java8 一個(gè)對(duì)象按照對(duì)象里的某一個(gè)字段的順序排列
問(wèn)題描述
比如我想在有一個(gè)類(lèi)User里面的屬性是這樣的 private int age,private String name有幾個(gè)對(duì)象
User user1 = new User(21,'張三') User user2 = new User(25,'李四') User user3 = new User(22,'王五') List<User> list = new ArrayList(); list.add(user1) add(user2) add(user3)
現(xiàn)在我想按照年齡的升序排列 即最后lisr的顯示結(jié)果是 user1 user3 user2怎么用java8的lambda表達(dá)式寫(xiě)呢?這個(gè)是和user類(lèi)似的類(lèi),比較里面的count值,可以實(shí)現(xiàn)功能,但是為什么括號(hào)里的代碼是灰色的?鼠標(biāo)移上去。報(bào)Can be replaced with Comparator.comparingInt more... (Ctrl+F1)
問(wèn)題解答
回答1:樓上的那個(gè)不是友好哈,下面這種方式更聲明式一點(diǎn),不是老命令式的
List<User> newList = list.stream().sorted(Comparator.comparing(User::getAge)) .collect(Collectors.toList());
這樣寫(xiě)不是很易讀一點(diǎn)嘛,根據(jù)User的age屬性進(jìn)行個(gè)排序,屬性是int就按照int排序,其實(shí)Comparator.comparing(User::getAge)創(chuàng)建了一個(gè)比較器,默認(rèn)是升序哈,如果想要降序...reverse一下就好了
List<User> newList = list.stream().sorted(Comparator.comparing(User::getAge).reversed()) .collect(Collectors.toList());
十分巴適的嘛...哈哈
回答2:Arrays.sort(list, (user1 , user2) -> Integer.compare(v1.age, v2.age));
回答3:依我看應(yīng)該實(shí)現(xiàn)Comparable接口,然后直接調(diào)用sort
相關(guān)文章:
1. objective-c - 從朋友圈跳到我的APP 如何實(shí)現(xiàn)?2. 網(wǎng)頁(yè)爬蟲(chóng) - python爬蟲(chóng)用BeautifulSoup爬取<s>元素并寫(xiě)入字典,但某些div下沒(méi)有這一元素,導(dǎo)致自動(dòng)寫(xiě)入下一條,如何解決?3. javascript - html 中select如何修改樣式,鼠標(biāo)懸浮時(shí)改變option樣式,有沒(méi)有插件啊4. HTML5禁止img預(yù)覽該怎么解決?5. 請(qǐng)教一個(gè)python字符串處理的問(wèn)題?6. 如何分別在Windows下用Winform項(xiàng)模板+C#,在MacOSX下用Cocos Application項(xiàng)目模板+Objective-C實(shí)現(xiàn)一個(gè)制作游戲的空的黑窗口?7. javascript - vue+iview upload傳參失敗 跨域問(wèn)題后臺(tái)已經(jīng)解決 仍然報(bào)403,這是怎么回事啊?8. javascript - vscode alt+shift+f 格式化js代碼,通不過(guò)eslint的代碼風(fēng)格檢查怎么辦。。。9. 怎么可以實(shí)現(xiàn)在手機(jī)瀏覽器看到鏈接的title屬性,就是鼠標(biāo)放上去會(huì)有一個(gè)tip效果的10. 百度地圖api - Android 百度地圖 集成了定位,導(dǎo)航 相互的jar包有沖突?
