久久精品国产亚洲高清|精品日韩中文乱码在线|亚洲va中文字幕无码久|伊人久久综合狼伊人久久|亚洲不卡av不卡一区二区|精品久久久久久久蜜臀AV|国产精品19久久久久久不卡|国产男女猛烈视频在线观看麻豆

    1. <style id="76ofp"></style>

      <style id="76ofp"></style>
      <rt id="76ofp"></rt>
      <form id="76ofp"><optgroup id="76ofp"></optgroup></form>
      1. 千鋒教育-做有情懷、有良心、有品質的職業(yè)教育機構

        手機站
        千鋒教育

        千鋒學習站 | 隨時隨地免費學

        千鋒教育

        掃一掃進入千鋒手機站

        領取全套視頻
        千鋒教育

        關注千鋒學習站小程序
        隨時隨地免費學習課程

        當前位置:首頁  >  技術干貨  > set.contains詳解

        set.contains詳解

        來源:千鋒教育
        發(fā)布人:xqq
        時間: 2023-11-23 11:48:50 1700711330

        一、set.contains介紹

        set.contains()函數(shù)是Java中Set接口中的一個方法,該方法判斷Set中是否包含某個元素,若包含則返回true,否則返回false。

        其用法為:

        Set set = new HashSet<>();
        set.add(element);
        boolean result = set.contains(element);

        其中,element為Set中的元素,result為boolean類型的變量,用于記錄Set中是否包含該元素。

        二、set.contains的時間復雜度

        set.contains的時間復雜度與使用的Set實現(xiàn)有關。對于基于哈希表的實現(xiàn),如HashSet和LinkedHashSet,其平均時間復雜度為O(1);對于基于紅黑樹的實現(xiàn),如TreeSet,其平均時間復雜度為O(log n)。

        在實際應用中,選用適當?shù)腟et實現(xiàn)能夠達到更好的性能。

        三、set.contains與equals的關系

        set.contains的判斷依賴于元素的hashCode以及equals函數(shù)的返回值。如果兩個元素的hashCode相同,但equals函數(shù)返回值不同,則判斷這兩個元素相等的結果是錯誤的。

        為了避免此類問題,程序員需要確保重寫了元素類的equals函數(shù),保證元素相等的判斷符合自己的需求。

        例如,對于一個Person類:

        class Person {
            private String name;
            private int age;
            //... 
            @Override
            public boolean equals(Object o) {
                if (this == o) return true;
                if (!(o instanceof Person)) return false;
                Person person = (Person) o;
                return age == person.age &&
                        Objects.equals(name, person.name);
            }
            @Override
            public int hashCode() {
                return Objects.hash(name, age);
            }
        }

        在使用Set時,如果只重寫了hashCode函數(shù)而沒有重寫equals函數(shù),則set.contains()很可能會判斷出兩個元素不相等,即使它們在業(yè)務上應該是相等的。

        四、set.contains的使用場景

        set.contains的常見使用場景包括:

        判斷集合中是否包含指定元素 對于刪除、修改等操作,先使用set.contains判斷操作元素是否存在 對于數(shù)據(jù)量比較大的List,可以先將List中的元素加入set中,再使用set.contains實現(xiàn)快速查找

        五、set.contains的應用舉例

        以下代碼展示了如何使用set.contains實現(xiàn)兩個字符串的交集:

        public Set intersection(String s1, String s2) {
            Set set1 = new HashSet<>();
            Set set2 = new HashSet<>();
            for (char c : s1.toCharArray()) {
                set1.add(c);
            }
            for (char c : s2.toCharArray()) {
                set2.add(c);
            }
            Set result = new HashSet<>();
            for (char c : set1) {
                if (set2.contains(c)) {
                    result.add(c);
                }
            }
            return result;
        }

        其中,set1和set2分別表示兩個字符串中各個字符集合,用set.contains計算它們的交集,最終返回一個Set類型的結果。

        聲明:本站稿件版權均屬千鋒教育所有,未經(jīng)許可不得擅自轉載。
        10年以上業(yè)內強師集結,手把手帶你蛻變精英
        請您保持通訊暢通,專屬學習老師24小時內將與您1V1溝通
        免費領取
        今日已有369人領取成功
        劉同學 138****2860 剛剛成功領取
        王同學 131****2015 剛剛成功領取
        張同學 133****4652 剛剛成功領取
        李同學 135****8607 剛剛成功領取
        楊同學 132****5667 剛剛成功領取
        岳同學 134****6652 剛剛成功領取
        梁同學 157****2950 剛剛成功領取
        劉同學 189****1015 剛剛成功領取
        張同學 155****4678 剛剛成功領取
        鄒同學 139****2907 剛剛成功領取
        董同學 138****2867 剛剛成功領取
        周同學 136****3602 剛剛成功領取
        相關推薦HOT
        沈丘县| 长子县| 梨树县| 沙河市| 丽水市| 永德县| 西青区| 肇州县| 九江县| 邵阳市| 涿州市| 蒲城县| 新田县| 时尚| 尼勒克县| 渝中区| 双城市| 千阳县| 班玛县| 都兰县| 彰化市| 南阳市| 洪江市| 微山县| 平江县| 祁门县| 敖汉旗| 达州市| 烟台市| 西峡县| 甘德县| 西乌珠穆沁旗| 遂宁市| 潞城市| 多伦县| 襄樊市| 台南市| 双城市| 乌鲁木齐县| 奎屯市| 开阳县|