java比較兩個list是否相同equals的程式碼詳解
阿新 • • 發佈:2020-02-05
比較兩個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。
以上就是本次介紹的全部相關知識點,感謝大家的學習和對我們的支援。