<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>

                企業??AI智能體構建引擎,智能編排和調試,一鍵部署,支持知識庫和私有化部署方案 廣告
                ## [基本概念](https://lingcoder.gitee.io/onjava8/#/book/12-Collections?id=%e5%9f%ba%e6%9c%ac%e6%a6%82%e5%bf%b5) Java集合類庫采用“持有對象”(holding objects)的思想,并將其分為兩個不同的概念,表示為類庫的基本接口: 1. **集合(Collection)**:一個獨立元素的序列,這些元素都服從一條或多條規則。**List**必須以插入的順序保存元素,**Set**不能包含重復元素,**Queue**按照*排隊規則*來確定對象產生的順序(通常與它們被插入的順序相同)。 2. **映射(Map)**: 一組成對的“鍵值對”對象,允許使用鍵來查找值。**ArrayList**使用數字來查找對象,因此在某種意義上講,它是將數字和對象關聯在一起。**map**允許我們使用一個對象來查找另一個對象,它也被稱作*關聯數組*(associative array),因為它將對象和其它對象關聯在一起;或者稱作*字典*(dictionary),因為可以使用一個鍵對象來查找值對象,就像在字典中使用單詞查找定義一樣。**Map**是強大的編程工具。 盡管并非總是可行,但在理想情況下,你編寫的大部分代碼都在與這些接口打交道,并且唯一需要指定所使用的精確類型的地方就是在創建的時候。因此,可以像下面這樣創建一個**List**: ~~~ List<Apple> apples = new ArrayList<>(); ~~~ 請注意,**ArrayList**已經被向上轉型為了**List**,這與之前示例中的處理方式正好相反。使用接口的目的是,如果想要改變具體實現,只需在創建時修改它就行了,就像下面這樣: ~~~ List<Apple> apples = new LinkedList<>(); ~~~ 因此,應該創建一個具體類的對象,將其向上轉型為對應的接口,然后在其余代碼中都是用這個接口。 這種方式并非總是有效的,因為某些具體類有額外的功能。例如,**LinkedList**具有**List**接口中未包含的額外方法,而**TreeMap**也具有在**Map**接口中未包含的方法。如果需要使用這些方法,就不能將它們向上轉型為更通用的接口。 **Collection**接口概括了*序列*的概念——一種存放一組對象的方式。下面是個簡單的示例,用**Integer**對象填充了一個**Collection**(這里用**ArrayList**表示),然后打印集合中的每個元素: ~~~ // collections/SimpleCollection.java import java.util.*; public class SimpleCollection { public static void main(String[] args) { Collection<Integer> c = new ArrayList<>(); for(int i = 0; i < 10; i++) c.add(i); // Autoboxing for(Integer i : c) System.out.print(i + ", "); } } /* Output: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, */ ~~~ 這個例子僅使用了**Collection**中的方法(即`add()`),所以使用任何繼承自**Collection**的類的對象都可以正常工作。但是**ArrayList**是最基本的序列類型。 `add()`方法的名稱就表明它是在**Collection**中添加一個新元素。但是,文檔中非常詳細地敘述到`add()`“要確保這個**Collection**包含指定的元素。”這是因為考慮到了**Set**的含義,因為在**Set**中,只有當元素不存在時才會添加元素。在使用**ArrayList**,或任何其他類型的**List**時,`add()`總是表示“把它放進去”,因為**List**不關心是否存在重復元素。 可以使用*for-in*語法來遍歷所有的**Collection**,就像這里所展示的那樣。在本章的后續部分,還將學習到一個更靈活的概念,*迭代器*。
                  <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>

                              哎呀哎呀视频在线观看