java8 使用流處理,對List進行去重

java8的stream流能完美解對象集合去重問題

記錄自己在工作中經常使用到的lambda表達式寫法,lambda表達式極大的簡化了代碼,讓整個代碼的排班更加精簡突顯風格,但是卻也增加了閱讀的難度,特別是對原理不熟悉或者閱讀他人代碼的情況下進行調式的難度會增加

List<String> strList = new ArrayList<String>();

strList.add("一年級");
strList.add("二年級");
strList.add("三年級");
strList.add("四年級");
strList.add("二年級");


List<ClassRoom> roomLits = new ArrayList<ClassRoom>();

ClassRoom classRoom = new ClassRoom();
classRoom.setId("1001");
classRoom.setName("大教室");
classRoom.setSite("A棟");
roomLits.add(classRoom);

ClassRoom classRoom = new ClassRoom();
classRoom.setId("1002");
classRoom.setName("小教室");
classRoom.setSite("A棟");
roomLits.add(classRoom);

ClassRoom classRoom = new ClassRoom();
classRoom.setId("1003");
classRoom.setName("大教室");
classRoom.setSite("B棟");
roomLits.add(classRoom);

ClassRoom classRoom = new ClassRoom();
classRoom.setId("1004");
classRoom.setName("小教室");
classRoom.setSite("A棟");
roomLits.add(classRoom);

一、List去重處理


List<String> newStrList = 
strList.stream().distinct().collect(Collectors.toList());

二、List轉Map<String,Object>

//將List 裝成Map key-Id value-ClassRoom

Map<String,ClassRoom> roomMap = 
roomList.stream().collect(Collectors.toMap(ClassRoom :: getId, m -> 
m));

三、List轉List


//1、提取出list對象中的一個屬性

List<String> newRoomList = roomList.stream().map(ClassRoom :: 
getId).distinct().collect(Collectors.toList());


//2、提取出list對象中的一個屬性並去重

List<String> newRoomList = roomList.stream().map(ClassRoom :: 
getId).distinct().collect(Collectors.toList());

四、List去重


// 根據name,site兩個屬性去重

List<ClassRoom> newRoomList = roomList.stream().collect(        
	Collectors.collectingAndThen( 		
		Collectors.toCollection(() -> new TreeSet<>(                     
			Comparator.comparing(o ->                              	
					o.getName() + ";" + o.getSite()))),                	
			ArrayList::new));


發佈了7 篇原創文章 · 獲贊 15 · 訪問量 1萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章