欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

java 實現(xiàn)多個list 合并成一個去掉重復的案例

 更新時間:2020年08月26日 11:06:38   作者:Holyday  
這篇文章主要介紹了java 實現(xiàn)多個list 合并成一個去掉重復的案例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧

我就廢話不多說了,大家還是直接看代碼吧~

 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

補充知識:java8 lambda小試牛刀,利用Stream把list轉(zhuǎn)map,并將兩個list的數(shù)據(jù)對象合并起來

我就廢話不多說了,大家還是直接看代碼吧~

public static void main(String[] args) {
		// 集合1
		List<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);
		// 集合1
		List<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ù)量復制過去
				n.setSelectNum(obj.getSelectNum());
			}
		});
		System.out.println("lists:="+lists);
		// 重復問題
		Map<Integer, SkillUpgrade> keyRedo = listx.stream()
				.collect(Collectors.toMap(SkillUpgrade::getLv, Function.identity(), (key1, key2) -> key2));
		// 方式二:指定實例的map
		Map<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 實現(xiàn)多個list 合并成一個去掉重復的案例就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • SpringBoot項目整合攔截器詳解

    SpringBoot項目整合攔截器詳解

    這篇文章主要介紹了SpringBoot項目整合攔截器詳解,java里的攔截器是動態(tài)攔截Action調(diào)用的對象,它提供了一種機制可以使開發(fā)者在一個Action執(zhí)行的前后執(zhí)行一段代碼,攔截器用于在某個方法或者字段被訪問之前進行攔截,然后再之前或者之后加入某些操作,需要的朋友可以參考下
    2023-10-10
  • SpringBoot+MyBatis+Redis實現(xiàn)分布式緩存

    SpringBoot+MyBatis+Redis實現(xiàn)分布式緩存

    本文主要介紹了SpringBoot+MyBatis+Redis實現(xiàn)分布式緩存,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2024-01-01
  • spring的幾個重要類和接口(詳解)

    spring的幾個重要類和接口(詳解)

    下面小編就為大家?guī)硪黄猻pring的幾個重要類和接口(詳解)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-04-04
  • springboot文件上傳保存路徑的問題

    springboot文件上傳保存路徑的問題

    這篇文章主要介紹了springboot文件上傳保存路徑的問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-09-09
  • 詳解Java?SSM項目部署上線配置方法(阿里云服務器ECS?+?云數(shù)據(jù)庫RDS?MySQL)(寶塔)

    詳解Java?SSM項目部署上線配置方法(阿里云服務器ECS?+?云數(shù)據(jù)庫RDS?MySQL)(寶塔)

    這篇文章主要介紹了Java?SSM項目部署上線(阿里云服務器ECS?+?云數(shù)據(jù)庫RDS?MySQL)(寶塔)的圖文教程,本文通過圖文并茂的形式給大家介紹的非常詳細,感興趣的朋友一起看看吧
    2024-01-01
  • 深入了解SparkSQL中數(shù)據(jù)的加載與保存

    深入了解SparkSQL中數(shù)據(jù)的加載與保存

    這篇文章主要為大家詳細介紹了SparkSQL中數(shù)據(jù)的加載與保存的相關(guān)知識,文中的示例代碼講解詳細,具有一定的學習價值,感興趣的小伙伴可以了解下
    2023-11-11
  • Spring中的@EnableScheduling定時任務注解

    Spring中的@EnableScheduling定時任務注解

    這篇文章主要介紹了Spring中的@EnableScheduling注解,@EnableScheduling是 Spring Framework 提供的一個注解,用于啟用 Spring 的定時任務功能,通過使用這個注解,可以在 Spring 應用程序中創(chuàng)建定時任務,需要的朋友可以參考下
    2024-01-01
  • MyBatis-Plus如何使用枚舉自動關(guān)聯(lián)注入詳解

    MyBatis-Plus如何使用枚舉自動關(guān)聯(lián)注入詳解

    這篇文章主要給大家介紹了關(guān)于MyBatis-Plus如何使用枚舉自動關(guān)聯(lián)注入的相關(guān)資料,文中通過實例代碼介紹的非常詳細,對大家學習或者使用MyBatis-Plus具有一定的參考學習價值,需要的朋友可以參考下
    2022-03-03
  • Java實現(xiàn)文件變化監(jiān)控

    Java實現(xiàn)文件變化監(jiān)控

    這篇文章主要介紹了Java實現(xiàn)文件變化監(jiān)控的實現(xiàn)代碼,代碼附有注釋,分步驟介紹的非常詳細,非常不錯,具有參考借鑒價值,,需要的朋友可以參考下
    2016-08-08
  • Java 生成隨機單據(jù)號的實現(xiàn)示例

    Java 生成隨機單據(jù)號的實現(xiàn)示例

    本文主要介紹了Java 生成隨機單據(jù)號的實現(xiàn)示例,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-09-09

最新評論