java前後端物件集合去重
阿新 • • 發佈:2020-09-08
前端需求:存放五個物件的陣列,根據物件的id屬性去重,並組成一個新的陣列
五個物件:
let userArr = [ {id: '1', name: '張三'}, {id: '2', name: '李四'}, {id: '1', name: '王五'}, {id: '3', name: '趙六'}, {id: '3', name: '田七'}, ];
程式碼:使用陣列的reduce()方法
/** * reduce方法有兩個引數,一個是回撥函式,一個是初始值 * 回撥函式有兩個引數,這裡的cur是初始值,對應reduce的第二個引數, * next是陣列的下一個元素,即userArr的下一個元素,從第一個開始*/ userArr.reduce((cur, next) => { //如果cur不包含如何元素,則next和cur中的元素就不存在重複的現象,即可以直接把next新增到cur中 if(cur.length == 0){ cur.push(next); return cur; } //遍歷cur陣列,判斷next是否已經存在cur中 let judge = true; for(let i of cur){ if(i.id == next.id){ //如果已經存在,judge變成falsejudge = false; } } //如果不存在,則將next新增到cur中 judge ? cur.push(next) : ''; return cur; }, []);
五個Users物件:
Users user1 = new Users(); user1.setId("1"); user1.setName("張三"); Users user2 = new Users(); user2.setId("2"); user2.setName("李四"); Users user3 = new Users(); user3.setId("1"); user3.setName("王五"); Users user4 = new Users(); user4.setId("3"); user4.setName("趙六"); Users user5 = new Users(); user5.setId("2"); user5.setName("田七");
程式碼:使用Map集合的key唯一性:
List<Users> list = Arrays.asList(user1, user2, user3, user4, user5); Map<String, Users> map = new HashMap(); //在遍歷過程中,如果map中已經存在了i.getId()這個key,那麼將會替換掉之前那個物件 list.stream().forEach(i -> map.put(i.getId(), i)); //將map中的Users物件重新組裝成List List<Users> newList = new ArrayList(); map.keySet().stream().forEach(i -> newList.add(map.get(i)));