上次對Stream流來進行分組的文章很多人看,想看的可以來這:

Stream流來進行集合分組

這次小編又帶來Stream的去重,話不多數,直接上程式碼:

這是對簡單資料型別的去重

	//字串集合進行簡單的去重(其他資料型別去重一樣)
List<String> stringList = Arrays.asList("伽羅", "貂蟬", "羋月", "伽羅"); //jdk1.8Stream來去重
stringList = stringList.stream().distinct().collect(Collectors.toList()); System.out.println(JSON.toJSONString(stringList)); /**
* 執行結果:["伽羅","貂蟬","羋月"]
*
*/

對物件中的某一個屬性來進行去重:

/**
實體類
*/
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data//lombok簡化程式碼
@AllArgsConstructor
@NoArgsConstructor
public class Hero { //英雄id
private int id; //名字
private String name; //型別
private String type;
}
	//進行物件中的某個屬性進行去重
List<Hero> list = Arrays.asList(
new Hero(001,"孫悟空","刺客"),
new Hero(002,"韓信","刺客"),
new Hero(003,"伽羅","射手"),
new Hero(004,"阿狸","射手"),
new Hero(005,"貂蟬","法師")); //需求:每一個職業只能保留一個英雄
//去重規則,先出現的儲存,後出現的被去掉
list = list.stream()
.collect(Collectors.collectingAndThen(
Collectors.toCollection(() -> new TreeSet<>(Comparator.comparing(Hero::getType))), ArrayList::new)); System.out.println(JSON.toJSONString(list)); /**
* 執行結果:[{"id":1,"name":"孫悟空","type":"刺客"},{"id":3,"name":"伽羅","type":"射手"},
* {"id":5,"name":"貂蟬","type":"法師"}]
*/

這樣就學會了,直接複製程式碼執行一下,照貓畫虎不是難題,有什麼問題請留言,還請各位大佬批評指正!!!!