java比較兩個list是否相同equals的代碼詳解
比較兩個list是否相同,一般我用數(shù)組自帶的函數(shù)equals,如:
public int updateTemplateByVO(ContentTemplateVO contentTemplateVO) throws Exception { int flag = 0; if (null == contentTemplateVO) { return flag; } //比較新編輯的模板參數(shù)是否與原有的參數(shù)相同 //新的參數(shù)數(shù)組 List<String> stringList = getParamListFromTemplateContent(contentTemplateVO); //舊的參數(shù)數(shù)組 List<TContentTemplateParam> tContentTemplateParamList = selectTemplateParamsByTemplateId(contentTemplateVO.getId()); List<String> paramList = new ArrayList<String>(); //將從表里獲取的數(shù)組重新整理成包含相同類型的list數(shù)組 for (TContentTemplateParam contentParam : tContentTemplateParamList) { paramList.add(contentParam.getParamName()); } //比較兩個list Boolean sameSortFlag = stringList.equals(paramList); String content = contentTemplateVO.getSmsMsgContent(); StringBuilder stringBuilder = new StringBuilder(content); //參數(shù)有修改則重新排序 if (!sameSortFlag) { String newContent = rightSortForContentParam(contentTemplateVO.getSmsMsgContent()); contentTemplateVO.setSmsMsgContent(newContent); } contentTemplateVO.setUpdateTime(DateUtil.getNowAsDate()); TContentTemplate tContentTemplate = ModelCopyUtil.copy(contentTemplateVO, TContentTemplate.class); flag = tContentTemplateMapper.updateByPrimaryKeySelective(tContentTemplate); if (flag == 1 && (!sameSortFlag)) { //先刪除對應模板的參數(shù)配置 deleteContentTemplateParam(contentTemplateVO); //重新配置模板參數(shù) addContentTemplateParam(contentTemplateVO); } return flag; }
內(nèi)容擴展:
Java的倆個list之間比較,判斷是否一致的方法
前文
我看了一篇博客,是關于判斷倆個list的。看完之后我覺得可能并不是很好。
結合他的思路,我重新整理了一下代碼。
同時也看了看String中的equals的實現(xiàn)。
import java.util.List; public class ListUtil { /** * 使用時,務必保證每個對象中實現(xiàn)了equals()方法。 * 如果是自己寫的類,比如,Dog,Cat這些的,請重寫Object中的equals方法! * * @param aList 左右順序無所謂 * @param bList 左右順序無所謂 * @return 盡可能避免相同的情況 */ public static boolean equals(List aList, List bList) { if (aList == bList) return true; if (aList.size() != bList.size()) return false; int n = aList.size(); int i = 0; while (n-- != 0) { if (!aList.get(i).equals(bList.get(i))) return false; i++; } return true; } }
代碼過程
首先判斷倆個對象是否相同,如果相同,直接返回true。
接著判斷倆個的長度是否相同,相同才有比較的意義。
依照size,對list進行遍歷。這里是需要用到equals方法,所以在對自己寫的一些實體類判斷的時候,一定要記得實現(xiàn)覆寫hashCode()和equals()方法!同時切記equals方法的傳入?yún)?shù)為Object!否則會因為重載的原因,不調(diào)用你寫的方法。
最后,這個代碼算法復雜度為n。
以上就是本次介紹的全部相關知識點,感謝大家的學習和對腳本之家的支持。
相關文章
Java基于FFmpeg實現(xiàn)Mp4視頻轉(zhuǎn)GIF
FFmpeg是一套可以用來記錄、轉(zhuǎn)換數(shù)字音頻、視頻,并能將其轉(zhuǎn)化為流的開源計算機程序。本文主要介紹了在Java中如何基于FFmpeg進行Mp4視頻到Gif動圖的轉(zhuǎn)換,感興趣的小伙伴可以了解一下2022-11-11Springboot的spring-boot-maven-plugin導入失敗的解決方案
這篇文章主要介紹了Springboot的spring-boot-maven-plugin導入失敗的解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-07-07Java中的ReentrantReadWriteLock實現(xiàn)原理詳解
這篇文章主要介紹了Java中的ReentrantReadWriteLock實現(xiàn)原理詳解,讀寫鎖實現(xiàn)了接口ReadWriteLock,適合于讀多寫少的情況,支持公平鎖和非公平鎖,支持可沖入(進入讀鎖后可再進入讀鎖,進入寫鎖后可再進入寫鎖和讀鎖),需要的朋友可以參考下2024-01-01