<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                # Set接口 集合(數學意義)結構數據唯一、數據存儲無序,沒有跟索引相關的方法,不能用普通的for循環遍歷,必須使用迭代器遍歷或者增強for循環遍歷。 API: ~~~ ?public interface Set<E> extends Collection<E> { ? ? ?// 集合中添加元素 ? ? ?boolean add(E e); ? ? ? ? ? ?// 移除集合中的元素 ? ? ?boolean remove(Object o); ? ? ?// 清空集合 ? ? ?void clear(); ? ? ? ? ? ?// 是否包含某個元素 ? ? ?boolean contains(Object o); ? ? ?// 是否為空 ? ? ?boolean isEmpty(); ? ? ? ? ? ?// 返回遍歷集合的迭代器 ? ? ?Iterator<E> iterator(); ? ? ? ? ? ?// 集合中元素個數 ? ? ?int size(); ? ? ? ?} ~~~ &nbsp; Set接口的實現類: ****** ## HashSet 使用HashMap作為底層數據結構存放數據,HashSet中將要存放的數據作為HashMap的Key,HashMap中的value為一個在HashSet中定義的共享的Object對象。 存放數據的過程需要先計算hash值,在根據hash值和一個表達式計算元素在數組中存放的位置,這和HashMap是一致的。保存在HashSet中的對象一定要重寫hashcode和equals方法。 源碼: ~~~ ?public class HashSet<E> extends AbstractSet<E> ? ? ?implements Set<E>, Cloneable, java.io.Serializable { ? ? ?// HashMap保存數據 ? ? ?private transient HashMap<E,Object> map; ? ? ?// HashMap中Entry共享的value對象 ? ? ?private static final Object PRESENT = new Object(); ? ? ? ? ? ?// ---------------------構造方法------------------------ ? ? ?public HashSet() { ? ? ? ? ?// 初始化容量為16,負載因子為0.75 ? ? ? ? ?map = new HashMap<>(); ? ? } ? ? ?public HashSet(int initialCapacity, float loadFactor) { ? ? ? ? ?// 指定初始化容量和負載因子 ? ? ? ? ?map = new HashMap<>(initialCapacity, loadFactor); ? ? } ? ? ?// 使用LinkedHashMap作為實現類 ? ? ?// dummy僅僅只是來作為和其他構造方法的重載區別,沒有其他意義 ? ? ?HashSet(int initialCapacity, float loadFactor, boolean dummy) { ? ? ? ? ?map = new LinkedHashMap<>(initialCapacity, loadFactor); ? ? } ? ? ? ? ? ?//-----------------------操作------------------------- ? ? ?// 添加操作 ? ? ?public boolean add(E e) { ? ? ? ? ?// HashMap第一次添加的時候返回null,如果是返回null則證明是添加成功的操作 ? ? ? ? ?return map.put(e, PRESENT)==null; ? ? } ? ? ?// 移除操作, ? ? ?public boolean remove(Object o) { ? ? ? ? ?return map.remove(o)==PRESENT; ? ? } ? ? ?// HashSet中沒有獲取元素的操作,只能通過迭代的方式來遍歷數據 ? ? ?public Iterator<E> iterator() { ? ? ? ? ?return map.keySet().iterator(); ? ? } ? ? ?// 其他操作也基本都是通過HashMap來操作的 ?} ~~~ &nbsp; ## TreeSet 使用TreeSet保存的數據唯一、按照升序進行排序,對TreeSet進行遍歷也是按照排序后的順序進行遍歷的。由于其需要對數據進行排序,因此對于自定義的引用類型需要實現內部比較器或者外部比較器。否則的話會在創建階段就拋出錯誤。 底層使用TreeMap,使用共享的PRESENT作為value值。 &nbsp; ## LinkedHashSet 按照輸入順序進行輸出。在HashSet的基礎上多了一個總鏈表,將放入的元素串在一起,方便有序的遍歷。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看