HashSet實作Set接口,由哈希表(實際上是HashMap)支持,但不保證set 的迭代順序,並允許使用null元素。 HashSet的時間複雜度跟HashMap一致,若沒有雜湊衝突則時間複雜度為O(1),若有雜湊衝突則時間複雜度不超過O(n)。所以,在日常編碼中,可以使用HashSet來判斷主鍵是否存在。
案例:給定一個字串(不一定全為字母),請傳回第一個重複出現的字元。
/** 查找第一个重复字符 */public static Character findFirstRepeatedChar(String string) { // 检查空字符串 if (Objects.isNull(string) || string.isEmpty()) { return null; } // 查找重复字符 char[] charArray = string.toCharArray(); Set charSet = new HashSet<>(charArray.length); for (char ch : charArray) { if (charSet.contains(ch)) { return ch; } charSet.add(ch); } // 默认返回为空 return null; }
其中,由於Set的add函數有個特性-如果新增的元素已經再集合存在,則會傳回false。可以簡化程式碼為:
if (!charSet.add(ch)) { return ch; }
以上是java如何使用HashSet判斷主鍵是否存在的詳細內容。更多資訊請關注PHP中文網其他相關文章!