乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      Java中Set的數(shù)據結構及基本功能使用

       印度阿三17 2019-07-17

      Set是一個接口,它有兩種實現(xiàn)分別是HashSet和TreeSet。 Set的特點是不保存重復的元素,它和數(shù)學概念上的集合相似,它支持交集、并集、差集操作。 本文將介紹HashSet和TreeSet使用的數(shù)據結構以及兩種Set實現(xiàn)各自的應用場景,然后介紹交集、并集、差集的使用。

      HashSet vs TreeSet

      HashSet底層使用HashMap實現(xiàn),使用了數(shù)組和散列算法實現(xiàn),TreeSet使用TreeMap實現(xiàn),使用了紅黑樹數(shù)據結構。關于HashMap和TreeMap實現(xiàn)原理可以翻閱前面的文章。HashSet的優(yōu)點是查找速度快,缺點是不能順序遍歷Set中的元素,TreeSet的優(yōu)點是可以順序遍歷Set中的元素,缺點是查找速度比HashSet稍慢,實際應用中優(yōu)先使用HashSet,有排序需求時才考慮使用TreeSet。

      交集

      假設有集合A和集合B,所有既屬于A又屬于B的元素組成的集合,稱為集合A于集合B的交集。Set中交集使用retainAll方法實現(xiàn), 示例代碼如下:

      //交集示例代碼
      Set<String> set1 = new HashSet<String>();
      set1.add("A");
      set1.add("B");
      set1.add("C");
      set1.add("D");
      
      Set<String> set2 = new HashSet<String>();
      set2.add("C");
      set2.add("D");
      set2.add("E");
      set2.add("F");
      
      set1.retainAll(set2);
      System.out.println(set1);
      
      /*程序執(zhí)行輸出結果:
      [C, D]
      
      */

      并集

      假設有集合A和集合B,把A和B中的所有元素合并在一起組成的集合,稱為集合A和集合B的并集。Set中并集使用addAll方法實現(xiàn),示例代碼如下:

      //并集操作示例代碼
      Set<String> set1 = new HashSet<String>();
      set1.add("A");
      set1.add("B");
      set1.add("C");
      set1.add("D");
      
      Set<String> set2 = new HashSet<String>();
      set2.add("E");
      set2.add("F");
      set2.add("G");
      set2.add("H");
      
      set1.addAll(set2);
      System.out.println(set1);
      
      /*程序執(zhí)行輸出結果:
      [A, B, C, D, E, F, G, H]
      
      */

      差集

      假設有集合A和集合B,所有屬于A且不屬于B的元素組成的集合,稱為集合A和集合B的差集。Set中 差集使用removeAll方法實現(xiàn),示例代碼如下:

      //差集操作示例代碼
      Set<String> set1 = new HashSet<String>();
      set1.add("A");
      set1.add("B");
      set1.add("C");
      set1.add("D");
      
      Set<String> set2 = new HashSet<String>();
      set2.add("C");
      set2.add("D");
      set2.add("E");
      set2.add("F");
      
      set1.removeAll(set2);
      System.out.println(set1);
      
      /*程序執(zhí)行輸出結果:
      [A, B]
      
      */

      最后

      交集、并集、差集使用的方法都來自Collection接口,那么實現(xiàn)了Collection的其它非Set容器是否也可以進行數(shù)學集合操作?嚴格意義上來說只有Map和Set可以用來實現(xiàn)數(shù)學集合操作,因為數(shù)學集合沒有重復元素,Map和Set不能包含重復的鍵或元素,而數(shù)組、鏈表數(shù)據結構可以包含重復的元素,所以只能使用Map和Set來處理數(shù)學集合操作。Map是一個鍵值對集合,如果使用Map進行數(shù)學集合操作,那么我們往Map中添加元素時除了鍵以外還需要指定一個值。Set底層是對Map的封裝,它隱藏了Map中鍵值對的值,我們只需關注鍵,所以實際應用中數(shù)學集合操作只用Set處理。


      來源:https://www./content-1-335251.html

        本站是提供個人知識管理的網絡存儲空間,所有內容均由用戶發(fā)布,不代表本站觀點。請注意甄別內容中的聯(lián)系方式、誘導購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權內容,請點擊一鍵舉報。
        轉藏 分享 獻花(0

        0條評論

        發(fā)表

        請遵守用戶 評論公約

        類似文章 更多