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

java 實(shí)現(xiàn)多個(gè)list 合并成一個(gè)去掉重復(fù)的案例

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

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

 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,并將兩個(gè)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ù)量復(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í)例的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 實(shí)現(xiàn)多個(gè)list 合并成一個(gè)去掉重復(fù)的案例就是小編分享給大家的全部內(nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • SpringBoot項(xiàng)目整合攔截器詳解

    SpringBoot項(xiàng)目整合攔截器詳解

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

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

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

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

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

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

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

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

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

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

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

    Spring中的@EnableScheduling定時(shí)任務(wù)注解

    這篇文章主要介紹了Spring中的@EnableScheduling注解,@EnableScheduling是 Spring Framework 提供的一個(gè)注解,用于啟用 Spring 的定時(shí)任務(wù)功能,通過使用這個(gè)注解,可以在 Spring 應(yīng)用程序中創(chuàng)建定時(shí)任務(wù),需要的朋友可以參考下
    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)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),對大家學(xué)習(xí)或者使用MyBatis-Plus具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2022-03-03
  • Java實(shí)現(xiàn)文件變化監(jiān)控

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

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

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

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

最新評論