您好,登錄后才能下訂單哦!
這篇文章將為大家詳細講解有關java如何比較兩個list是否相同equals,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。
比較兩個list是否相同,一般我用數組自帶的函數equals,如:
public int updateTemplateByVO(ContentTemplateVO contentTemplateVO) throws Exception { int flag = 0; if (null == contentTemplateVO) { return flag; } //比較新編輯的模板參數是否與原有的參數相同 //新的參數數組 List<String> stringList = getParamListFromTemplateContent(contentTemplateVO); //舊的參數數組 List<TContentTemplateParam> tContentTemplateParamList = selectTemplateParamsByTemplateId(contentTemplateVO.getId()); List<String> paramList = new ArrayList<String>(); //將從表里獲取的數組重新整理成包含相同類型的list數組 for (TContentTemplateParam contentParam : tContentTemplateParamList) { paramList.add(contentParam.getParamName()); } //比較兩個list Boolean sameSortFlag = stringList.equals(paramList); String content = contentTemplateVO.getSmsMsgContent(); StringBuilder stringBuilder = new StringBuilder(content); //參數有修改則重新排序 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)) { //先刪除對應模板的參數配置 deleteContentTemplateParam(contentTemplateVO); //重新配置模板參數 addContentTemplateParam(contentTemplateVO); } return flag; }
內容擴展:
Java的倆個list之間比較,判斷是否一致的方法
前文
我看了一篇博客,是關于判斷倆個list的。看完之后我覺得可能并不是很好。
結合他的思路,我重新整理了一下代碼。
同時也看了看String中的equals的實現。
import java.util.List; public class ListUtil { /** * 使用時,務必保證每個對象中實現了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方法,所以在對自己寫的一些實體類判斷的時候,一定要記得實現覆寫hashCode()和equals()方法!同時切記equals方法的傳入參數為Object!否則會因為重載的原因,不調用你寫的方法。
最后,這個代碼算法復雜度為n。
關于“java如何比較兩個list是否相同equals”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,使各位可以學到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。