91aaa在线国内观看,亚洲AV午夜福利精品一区二区,久久偷拍人视频,久久播这里有免费视播

<strong id="fvuar"></strong>

  • <sub id="fvuar"><dl id="fvuar"><em id="fvuar"></em></dl></sub>

    1. 千鋒教育-做有情懷、有良心、有品質(zhì)的職業(yè)教育機構(gòu)

      手機站
      千鋒教育

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

      千鋒教育

      掃一掃進入千鋒手機站

      領(lǐng)取全套視頻
      千鋒教育

      關(guān)注千鋒學習站小程序
      隨時隨地免費學習課程

      當前位置:首頁  >  技術(shù)干貨  > 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)有關(guān)。對于基于哈希表的實現(xiàn),如HashSet和LinkedHashSet,其平均時間復雜度為O(1);對于基于紅黑樹的實現(xiàn),如TreeSet,其平均時間復雜度為O(log n)。

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

      三、set.contains與equals的關(guān)系

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

      為了避免此類問題,程序員需要確保重寫了元素類的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類型的結(jié)果。

      聲明:本站稿件版權(quán)均屬千鋒教育所有,未經(jīng)許可不得擅自轉(zhuǎn)載。
      10年以上業(yè)內(nèi)強師集結(jié),手把手帶你蛻變精英
      請您保持通訊暢通,專屬學習老師24小時內(nèi)將與您1V1溝通
      免費領(lǐng)取
      今日已有369人領(lǐng)取成功
      劉同學 138****2860 剛剛成功領(lǐng)取
      王同學 131****2015 剛剛成功領(lǐng)取
      張同學 133****4652 剛剛成功領(lǐng)取
      李同學 135****8607 剛剛成功領(lǐng)取
      楊同學 132****5667 剛剛成功領(lǐng)取
      岳同學 134****6652 剛剛成功領(lǐng)取
      梁同學 157****2950 剛剛成功領(lǐng)取
      劉同學 189****1015 剛剛成功領(lǐng)取
      張同學 155****4678 剛剛成功領(lǐng)取
      鄒同學 139****2907 剛剛成功領(lǐng)取
      董同學 138****2867 剛剛成功領(lǐng)取
      周同學 136****3602 剛剛成功領(lǐng)取
      相關(guān)推薦HOT