java 實(shí)現(xiàn)多個list 合并成一個去掉重復(fù)的案例
我就廢話不多說了,大家還是直接看代碼吧~
public static void main(String[] args){ List<Integer> list1 = new ArrayList<Integer>(); list1.add(1); list1.add(2); list1.add(3); list1.add(4); List<Integer> list2 = new ArrayList<Integer>(); list2.add(1); list2.add(4); list2.add(7); list2.add(10); List<Integer> listAll = new ArrayList<Integer>(); listAll.addAll(list1); listAll.addAll(list2); listAll = new ArrayList<Integer>(new LinkedHashSet<>(listAll)); System.out.println(listAll); }
輸出:
[1, 2, 3, 4, 7, 10]
代碼要典:
1、合并 使用java.util.List.addAll(Collection<? extends Integer>)
2、去重,借助LinkedHashSet
補(bǔ)充知識:java8 lambda小試牛刀,利用Stream把list轉(zhuǎn)map,并將兩個list的數(shù)據(jù)對象合并起來
我就廢話不多說了,大家還是直接看代碼吧~
public static void main(String[] args) {// 集合1List<SkillUpgrade> lists = new ArrayList<>();SkillUpgrade s = new SkillUpgrade();s.setLv(1);s.setAppearNum(100);lists.add(s);SkillUpgrade s2 = new SkillUpgrade();s2.setLv(2);s2.setAppearNum(200);lists.add(s2);// 集合1List<SkillUpgrade> listx = new ArrayList<>();SkillUpgrade x = new SkillUpgrade();x.setLv(1);x.setSelectNum(1100);listx.add(x);SkillUpgrade x2 = new SkillUpgrade();x2.setLv(2);x2.setSelectNum(1200);listx.add(x2);// 把list轉(zhuǎn)map,{k=lv,vaule=并為自身} . SkillUpgrade->SkillUpgrade或Function.identity()Map<Integer, SkillUpgrade> map = listx.stream().collect(Collectors.toMap(SkillUpgrade::getLv, SkillUpgrade -> SkillUpgrade));System.out.println('map:='+map);// 合并lists.forEach(n -> {// 如果等級一致if (map.containsKey(n.getLv())) {SkillUpgrade obj = map.get(n.getLv());// 把數(shù)量復(fù)制過去n.setSelectNum(obj.getSelectNum());}});System.out.println('lists:='+lists);// 重復(fù)問題Map<Integer, SkillUpgrade> keyRedo = listx.stream().collect(Collectors.toMap(SkillUpgrade::getLv, Function.identity(), (key1, key2) -> key2));// 方式二:指定實(shí)例的mapMap<Integer, SkillUpgrade> linkedHashMap = listx.stream().collect(Collectors.toMap(SkillUpgrade::getLv,SkillUpgrade -> SkillUpgrade, (key1, key2) -> key2, LinkedHashMap::new));}/** * output:map:={1=SkillUpgrade [skillId=null, skillName=null, lv=1, persNum=null, selectNum=1100, appearNum=null], 2=SkillUpgrade [skillId=null, skillName=null, lv=2, persNum=null, selectNum=1200, appearNum=null]} * lists:=[SkillUpgrade [skillId=null, skillName=null, lv=1, persNum=null, selectNum=1100, appearNum=100], SkillUpgrade [skillId=null, skillName=null, lv=2, persNum=null, selectNum=1200, appearNum=200]] */
輸出結(jié)果:
map:={1=SkillUpgrade [skillId=null, skillName=null, lv=1, persNum=null, selectNum=1100, appearNum=null], 2=SkillUpgrade [skillId=null, skillName=null, lv=2, persNum=null, selectNum=1200, appearNum=null]}
lists:=[SkillUpgrade [skillId=null, skillName=null, lv=1, persNum=null, selectNum=1100, appearNum=100], SkillUpgrade [skillId=null, skillName=null, lv=2, persNum=null, selectNum=1200, appearNum=200]]
以上這篇java 實(shí)現(xiàn)多個list 合并成一個去掉重復(fù)的案例就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持好吧啦網(wǎng)。
相關(guān)文章:
1. 詳解瀏覽器的緩存機(jī)制2. HTML5 Canvas繪制圖形從入門到精通3. jsp EL表達(dá)式詳解4. jsp實(shí)現(xiàn)登錄驗(yàn)證的過濾器5. 爬取今日頭條Ajax請求6. css代碼優(yōu)化的12個技巧7. jsp+servlet簡單實(shí)現(xiàn)上傳文件功能(保存目錄改進(jìn))8. msxml3.dll 錯誤 800c0019 系統(tǒng)錯誤:-2146697191解決方法9. asp批量添加修改刪除操作示例代碼10. .NET SkiaSharp 生成二維碼驗(yàn)證碼及指定區(qū)域截取方法實(shí)現(xiàn)
