<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智能體構建引擎,智能編排和調試,一鍵部署,支持知識庫和私有化部署方案 廣告
                # Java `ArrayList`教程 原文:http://zetcode.com/articles/javaarraylist/ Java `ArrayList`教程顯示了如何使用 Java 中的`ArrayList`集合。 `ArrayList`位于`java.util`包中,是 Java 集合框架的重要集合。 Java 集合框架是用于表示和操作集合的統一架構,使集合可以獨立于實現細節進行操作。 集合是代表一組對象的對象。 ## Java `ArrayList` `ArrayList`是元素的有序序列。 它是動態的并且可調整大小。 它提供對元素的隨機訪問。 隨機訪問意味著我們可以在恒定時間抓取任何元素。 添加數據后,`ArrayList`會自動擴展。 與簡單數組不同,`ArrayList`可以保存多種數據類型的數據。 它允許所有元素,包括`null`。 `ArrayList`中的元素通過整數索引訪問。 索引從零開始。 在`ArrayList`的末尾元素的索引以及插入和刪除需要固定的時間。 `ArrayList`實例具有容量。 容量是用于在列表中存儲元素的數組的大小。 當元素添加到`ArrayList`時,其容量會自動增長。 選擇適當的容量可以節省一些時間。 ## Java `ArrayList`添加單個項目 可以使用`add()`方法將單個元素添加到`ArrayList`。 `com/zetcode/ListAddItem.java` ```java package com.zetcode; import java.util.ArrayList; import java.util.List; public class ListAddItem { public static void main(String[] args) { List<String> langs = new ArrayList<>(); langs.add("Java"); langs.add("Python"); langs.add(1, "C#"); langs.add(0, "Ruby"); for (String lang : langs) { System.out.printf("%s ", lang); } System.out.println(); } } ``` 該示例將元素逐一添加到數組列表中。 ```java List<String> langs = new ArrayList<>(); ``` 創建一個`ArrayList`。 在菱形括號(`<>`)中指定的數據類型將元素限制為該數據類型。 在我們的例子中,我們有一個字符串列表。 ```java langs.add("Java"); ``` 使用`add()`方法將元素添加到列表的末尾。 ```java langs.add(1, "C#"); ``` 這次,重載的`add()`方法將元素插入指定位置; `"C#"`字符串將位于列表的第二個位置; 請記住,`ArrayList`是元素的有序序列。 ```java for (String lang : langs) { System.out.printf("%s ", lang); } ``` 通過`for`循環,我們瀏覽`ArrayList`列表并打印其元素。 ```java Ruby Java C# Python ``` 這是輸出。 請注意,元素保持插入順序。 ## Java 列表 從 Java 9 開始,我們有幾種工廠方法來創建包含少量元素的列表。 創建的列表是不可變的。 `com/zetcode/ListOf.java` ```java package com.zetcode; import java.util.List; public class ListOf { public static void main(String[] args) { var words = List.of("wood", "forest", "falcon", "eagle"); System.out.println(words); var values = List.of(1, 2, 3); System.out.println(values); } } ``` 在示例中,我們創建了兩個包含四個和三個元素的列表。 ## Java `ArrayList get()`和`size()` `get()`返回此列表中指定位置的元素,`size()`返回列表的大小。 `com/zetcode/GetAndSizeEx.java` ```java package com.zetcode; import java.util.ArrayList; import java.util.List; public class GetAndSizeEx { public static void main(String[] args) { List<String> colours = new ArrayList<>(); colours.add("blue"); colours.add("orange"); colours.add("red"); colours.add("green"); String col = colours.get(1); System.out.println(col); int size = colours.size(); System.out.printf("The size of the ArrayList is: %d%n", size ); } } ``` 該示例使用了`ArrayList`的`get()`和`size()`方法 ```java String col = colours.get(1); ``` `get()`方法返回第二個元素,即`"orange"`。 ```java int size = colours.size(); ``` `size()`方法確定`colours`列表的大小; 我們有四個要素。 ```java orange The size of the ArrayList is: 4 ``` 這是示例的輸出。 ## Java `ArrayList`復制 可以使用`List.copy()`方法生成列表的副本。 `com/zetcode/ListCopy.java` ```java package com.zetcode; import java.util.List; public class ListCopy { public static void main(String[] args) { var words = List.of("forest", "wood", "eagle", "sky", "cloud"); System.out.println(words); var words2 = List.copyOf(words); System.out.println(words2); } } ``` 該示例使用`List.copy()`創建列表的副本。 ## 原始`ArrayList` `ArrayList`可以包含各種數據類型。 這些稱為原始列表。 > **注意**:通常不建議使用原始列表。 原始列表通常需要強制轉換,而且類型安全。 `com/zetcode/DataTypesEx.java` ```java package com.zetcode; import java.util.ArrayList; import java.util.List; class Base {} enum Level { EASY, MEDIUM, HARD } public class DataTypesEx { public static void main(String[] args) { Level level = Level.EASY; List da = new ArrayList(); da.add("Java"); da.add(3.5); da.add(55); da.add(new Base()); da.add(level); for (Object el : da) { System.out.println(el); } } } ``` 該示例將五種不同的數據類型添加到數組列表中-字符串,雙精度型,整數,對象和枚舉。 ```java List da = new ArrayList(); ``` 當我們將多個數據類型添加到列表時,我們省略了尖括號。 ```java Java 3.5 55 com.zetcode.Base@659e0bfd EASY ``` 這是輸出。 ## Java `ArrayList`添加多個元素 下面的示例使用`addAll()`方法一步將多個元素添加到列表中。 `com/zetcode/AddingMultipleItemsEx.java` ```java package com.zetcode; import java.util.ArrayList; import java.util.List; public class AddingMultipleItemsEx { public static void main(String[] args) { List<String> colours1 = new ArrayList<>(); colours1.add("blue"); colours1.add("red"); colours1.add("green"); List<String> colours2 = new ArrayList<>(); colours2.add("yellow"); colours2.add("pink"); colours2.add("brown"); List<String> colours3 = new ArrayList<>(); colours3.add("white"); colours3.add("orange"); colours3.addAll(colours1); colours3.addAll(2, colours2); for (String col : colours3) { System.out.println(col); } } } ``` 創建兩個列表。 稍后,使用`addAll()`方法將列表中的元素添加到第三個列表中。 ```java colours3.addAll(colours1); ``` `addAll()`方法將所有元素添加到列表的末尾。 ```java colours3.addAll(2, colours2); ``` 此重載方法添加了從指定位置開始的所有元素。 ```java white orange yellow pink brown blue red green ``` This is the output of the example. ## Java `ArrayList`修改元素 下一個示例使用方法來修改`ArrayList`。 `com/zetcode/ModifyingListEx.java` ```java package com.zetcode; import java.util.ArrayList; import java.util.List; public class ModifyingListEx { public static void main(String[] args) { List<String> items = new ArrayList<>(); fillList(items); items.set(3, "watch"); items.add("bowl"); items.remove(0); items.remove("pen"); for (Object el : items) { System.out.println(el); } items.clear(); if (items.isEmpty()) { System.out.println("The list is empty"); } else { System.out.println("The list is not empty"); } } public static void fillList(List<String> list) { list.add("coin"); list.add("pen"); list.add("pencil"); list.add("clock"); list.add("book"); list.add("spectacles"); list.add("glass"); } } ``` 使用`set()`,`add()`,`remove()`和`clear()`方法創建和修改`ArrayList`。 ```java items.set(3, "watch"); ``` `set()`方法將第四個元素替換為`"watch"`項。 ```java items.add("bowl"); ``` `add()`方法在列表的末尾添加一個新元素。 ```java items.remove(0); ``` `remove()`方法刪除索引為 0 的第一個元素。 ```java items.remove("pen"); ``` 重載的`remove()`方法刪除`"pen"`項的第一次出現。 ```java items.clear(); ``` `clear()`方法從列表中刪除所有元素。 ```java if (items.isEmpty()) { ``` `isEmpty()`方法確定列表是否為空。 ```java pencil watch book spectacles glass bowl The list is empty ``` This is the output of the example. ## Java `ArrayList removeIf` `removeIf()`方法刪除滿足給定謂詞的集合中的所有元素。 `com/zetcode/RemoveIfEx.java` ```java package com.zetcode; import java.util.ArrayList; import java.util.List; public class RemoveIfEx { public static void main(String[] args) { List<Integer> values = new ArrayList<>(); values.add(5); values.add(-3); values.add(2); values.add(8); values.add(-2); values.add(6); values.removeIf(val -> val < 0); System.out.println(values); } } ``` 在我們的示例中,我們有一個`ArrayList`整數。 我們使用`removeIf`方法刪除所有負值。 ```java values.removeIf(val -> val < 0); ``` 所有負數將從數組列表中刪除。 ```java [5, 2, 8, 6] ``` 這是輸出。 ## Java `ArrayList removeAll` `removeAll()`方法從該列表中刪除指定集合中包含的所有其元素。 請注意,所有元素都已通過`clear()`刪除。 `com/zetcode/RemoveAll.java` ```java package com.zetcode; import java.util.ArrayList; import java.util.Collections; import java.util.List; public class RemoveAll { public static void main(String[] args) { List<String> letters = new ArrayList<>(); letters.add("a"); letters.add("b"); letters.add("c"); letters.add("a"); letters.add("d"); System.out.println(letters); letters.removeAll(Collections.singleton("a")); System.out.println(letters); } } ``` 在示例中,我們從列表中刪除了所有`"a"`字母。 ## Java `ArrayList replaceAll` `replaceAll()`方法用將運算符應用于該元素的結果替換列表的每個元素。 `com/zetcode/ReplaceAllEx.java` ```java package com.zetcode; import java.util.ArrayList; import java.util.List; import java.util.function.UnaryOperator; public class ReplaceAllEx { public static void main(String[] args) { List<String> items = new ArrayList<>(); items.add("coin"); items.add("pen"); items.add("cup"); items.add("notebook"); items.add("class"); UnaryOperator<String> uo = (x) -> x.toUpperCase(); items.replaceAll(uo); System.out.println(items); } } ``` 該示例在每個列表元素上應用了一個運算符。 元素的字母轉換為大寫。 ```java UnaryOperator<String> uo = (x) -> x.toUpperCase(); ``` 創建將字母轉換為大寫的`UnaryOperator`。 ```java items.replaceAll(uo); ``` 使用`replaceAll()`方法將運算符應用于列表元素。 ```java [COIN, PEN, CUP, NOTEBOOK, CLASS] ``` 這是輸出。 第二個示例使用`replaceAll()`方法將字符串項目大寫。 `com/zetcode/ReplaceAllEx2.java` ```java package com.zetcode; import java.util.ArrayList; import java.util.List; import java.util.function.UnaryOperator; class MyOperator<T> implements UnaryOperator<String> { @Override public String apply(String var) { if (var == null || var.length() == 0) { return var; } return var.substring(0, 1).toUpperCase() + var.substring(1); } } public class ReplaceAllEx2 { public static void main(String[] args) { List<String> items = new ArrayList<>(); items.add("coin"); items.add("pen"); items.add("cup"); items.add("notebook"); items.add("glass"); items.replaceAll(new MyOperator<>()); System.out.println(items); } } ``` 我們有一個字符串項目列表。 這些項目在`replaceAll()`方法的幫助下大寫。 ```java class MyOperator<T> implements UnaryOperator<String> { ``` 創建自定義`UnaryOperator`。 ```java @Override public String apply(String var) { if (var == null || var.length() == 0) { return var; } return var.substring(0, 1).toUpperCase() + var.substring(1); } ``` 在`UnaryOperator`的`apply()`方法中,我們使用第一個大寫字母還原字符串。 ```java items.replaceAll(new MyOperator<>()); ``` 將運算符應用于列表項。 ```java [Coin, Pen, Cup, Notebook, Glass] ``` This is the output of the example. ## Java `ArrayList.contains()` 如果列表包含指定的元素,則`contains()`方法返回`true`。 `com/zetcode/ContainsEx.java` ```java package com.zetcode; import java.util.ArrayList; import java.util.List; public class ContainsEx { public static void main(String[] args) { List<String> items = new ArrayList<>(); items.add("coin"); items.add("pen"); items.add("cup"); items.add("notebook"); items.add("class"); String item = "pen"; if (items.contains(item)) { System.out.printf("There is a %s in the list%n", item); } } } ``` 該示例檢查指定的項目是否在列表中。 ```java if (items.contains(item)) { System.out.printf("There is a %s in the list%n", item); } ``` 如果該項目在列表中,則會打印該消息。 ```java There is a pen in the list ``` 這是輸出。 ## 獲取`ArrayList`中元素的索引 `ArrayList`中的每個元素都有其自己的索引號。 `indexOf()`返回指定元素首次出現的索引,如果列表不包含該元素,則返回 -1。 `lasindexOf()`返回指定元素最后一次出現的索引;如果列表中不包含該元素,則返回 -1。 `com/zetcode/GetIndexEx.java` ```java package com.zetcode; import java.util.ArrayList; import java.util.List; public class GetIndexEx { public static void main(String[] args) { List<String> colours = new ArrayList<>(); colours.add(0, "blue"); colours.add(1, "orange"); colours.add(2, "red"); colours.add(3, "green"); colours.add(4, "orange"); int idx1 = colours.indexOf("orange"); System.out.println(idx1); int idx2 = colours.lastIndexOf("orange"); System.out.println(idx2); } } ``` 該示例打印`"orange"`元素的第一個和最后一個索引。 ```java 1 4 ``` 這是示例輸出。 # Java 列表的列表 We can add other lists into a list. `com/zetcode/ListOfLists.java` ```java package com.zetcode; import java.util.ArrayList; import java.util.List; public class ListOfLists { public static void main(String[] args) { List<Integer> l1 = new ArrayList<>(); l1.add(1); l1.add(2); l1.add(3); List<Integer> l2 = new ArrayList<>(); l2.add(4); l2.add(5); l2.add(6); List<Integer> l3 = new ArrayList<>(); l3.add(7); l3.add(8); l3.add(9); List<List<Integer>> nums = new ArrayList<>(); nums.add(l1); nums.add(l2); nums.add(l3); System.out.println(nums); for (List<Integer> list : nums) { for (Integer n : list) { System.out.printf("%d ", n); } System.out.println(); } } } ``` 該示例創建三個整數列表。 以后,這些列表將添加到另一個第四列表中。 ```java List<Integer> l1 = new ArrayList<>(); l1.add(1); l1.add(2); l1.add(3); ``` 將創建一個整數列表。 ```java List<List> nums = new ArrayList<>(); nums.add(l1); nums.add(l2); nums.add(l3); ``` 創建列表列表。 ```java for (List<Integer> list : nums) { for (Integer n : list) { System.out.printf("%d ", n); } System.out.println(); } ``` 我們使用兩個`for`循環遍歷所有元素。 ```java [[1, 2, 3], [4, 5, 6], [7, 8, 9]] 1 2 3 4 5 6 7 8 9 ``` 這是程序的輸出。 ## Java `ArrayList`子列表 `subList()`方法返回指定的`fromIndex`(包括)和`toIndex`(不包括)之間的列表部分的視圖。 子列表中的更改將反映在原始列表中。 `com/zetcode/SubListEx.java` ```java package com.zetcode; import java.util.ArrayList; import java.util.List; public class SubListEx { public static void main(String[] args) { List<String> items = new ArrayList<>(); items.add("coin"); items.add("pen"); items.add("cup"); items.add("notebook"); items.add("glass"); items.add("chair"); items.add("ball"); items.add("bowl"); List<String> items2 = items.subList(2, 5); System.out.println(items2); items2.set(0, "bottle"); System.out.println(items2); System.out.println(items); } } ``` 該示例從項目列表創建子列表。 ```java List<String> items2 = items.subList(2, 5); ``` 使用`subList()`方法創建一個子列表。 它包含索引為 2、3 和 4 的項目。 ```java items2.set(0, "bottle"); ``` 我們替換子列表的第一項; 修改也反映在原始列表中。 ```java [cup, notebook, glass] [bottle, notebook, glass] [coin, pen, bottle, notebook, glass, chair, ball, bowl] ``` This is the output of the example. ## Java `ArrayList`遍歷 在下面的示例中,我們展示了遍歷`ArrayList`的五種方法。 `com/zetcode/TraversingArrayListEx.java` ```java package com.zetcode; import java.util.ArrayList; import java.util.List; import java.util.ListIterator; public class TraversingArrayListEx { public static void main(String[] args) { List<Integer> nums = new ArrayList<>(); nums.add(2); nums.add(6); nums.add(7); nums.add(3); nums.add(1); nums.add(8); for (int i = 0; i < nums.size(); i++) { System.out.printf("%d ", nums.get(i)); } System.out.println(); for (int num : nums) { System.out.printf("%d ", num); } System.out.println(); int j = 0; while (j < nums.size()) { System.out.printf("%d ", nums.get(j)); j++; } System.out.println(); ListIterator<Integer> it = nums.listIterator(); while(it.hasNext()) { System.out.printf("%d ", it.next()); } System.out.println(); nums.forEach(e -> System.out.printf("%d ", e)); System.out.println(); } } ``` 在示例中,我們遍歷具有`for`循環,`while`循環,迭代器和`forEach()`構造的整數數組列表。 ```java List<Integer> nums = new ArrayList<>(); nums.add(2); nums.add(6); nums.add(7); nums.add(3); nums.add(1); nums.add(8); ``` 我們創建了一個`ArrayList`整數。 ```java for (int i = 0; i < nums.size(); i++) { System.out.printf("%d ", nums.get(i)); } ``` 在這里,我們使用經典的`for`循環遍歷列表。 ```java for (int num : nums) { System.out.printf("%d ", num); } ``` 第二種方法使用 Java 5 中引入的增強`for`循環。 ```java int j = 0; while (j < nums.size()) { System.out.printf("%d ", nums.get(j)); j++; } ``` 第三種方式使用`while`循環。 ```java ListIterator<Integer> it = nums.listIterator(); while(it.hasNext()) { System.out.printf("%d ", it.next()); } ``` 這里,`ListIterator`用于遍歷列表。 ```java nums.forEach(e -> System.out.printf("%d ", e)); ``` 最后,我們使用 Java8 中引入的`forEach()`方法。 ```java 2 6 7 3 1 8 2 6 7 3 1 8 2 6 7 3 1 8 2 6 7 3 1 8 2 6 7 3 1 8 ``` 該示例使用各種技術將列表的元素打印到控制臺。 ## Java `ArrayList`排序 對`ArrayList`進行分類有不同的浪費。 ### 使用其`sort`方法對`ArrayList`進行排序 `ArrayList`的`sort()`方法根據由指定比較器引起的順序對列表進行排序。 `com/zetcode/ArrayListSortingEx.java` ```java package com.zetcode; import java.util.ArrayList; import java.util.Comparator; import java.util.List; class Person { private int age; private String name; public Person(int age, String name) { this.age = age; this.name = name; } public int getAge() { return age; } @Override public String toString() { return "Age: " + age + " Name: " + name; } } public class ArrayListSortingEx { public static void main(String[] args) { List<Person> persons = createList(); persons.sort(Comparator.comparing(Person::getAge).reversed()); System.out.println(persons); } private static List<Person> createList() { List<Person> persons = new ArrayList<>(); persons.add(new Person(17, "Jane")); persons.add(new Person(32, "Peter")); persons.add(new Person(47, "Patrick")); persons.add(new Person(22, "Mary")); persons.add(new Person(39, "Robert")); persons.add(new Person(54, "Greg")); return persons; } } ``` 我們有一個自定義`Person`類的`ArrayList`。 我們按照年齡的相反順序對其進行排序。 ```java persons.sort(Comparator.comparing(Person::getAge).reversed()); ``` 此行按年齡(從最大到最小)對人員進行分類。 ```java [Age: 54 Name: Greg, Age: 47 Name: Patrick, Age: 39 Name: Robert, Age: 32 Name: Peter, Age: 22 Name: Mary, Age: 17 Name: Jane] ``` 這是輸出。 ### 使用 Java8 流對`ArrayList`進行排序 在第二個示例中,我們使用 Java 流對`ArrayList`進行排序。 流 API 是一種更強大的排序方式。 `com/zetcode/ArrayListSortingEx2.java` ```java package com.zetcode; import java.util.ArrayList; import java.util.List; import java.util.stream.Collectors; class Country { private String name; private int population; public Country(String name, int population) { this.name = name; this.population = population; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getPopulation() { return population; } public void setPopulation(int population) { this.population = population; } @Override public String toString() { return "Country{" + "name=" + name + ", population=" + population + '}'; } } public class ArrayListSortingEx2 { public static void main(String[] args) { List<Country> countries = createList(); List<Country> sorted_countries = countries.stream() .sorted((e1, e2) -> Integer.compare(e1.getPopulation(), e2.getPopulation())).collect(Collectors.toList()); System.out.println(sorted_countries); } private static List<Country> createList() { List<Country> countries = new ArrayList<>(); countries.add(new Country("Slovakia", 5424000)); countries.add(new Country("Hungary", 9845000)); countries.add(new Country("Poland", 38485000)); countries.add(new Country("Germany", 81084000)); countries.add(new Country("Latvia", 1978000)); return countries; } } ``` 在此示例中,我們有一個國家/地區列表。 每個國家都有名字和人口。 這些國家是按人口排序的。 ```java List<Country> sorted_countries = countries.stream() .sorted((e1, e2) -> Integer.compare(e1.getPopulation(), e2.getPopulation())).collect(Collectors.toList()); ``` 使用`stream()`方法,我們從列表創建流。 `sorted()`方法根據提供的比較器對元素進行排序。 使用`Integer.compare()`,我們比較了國家/地區的人口。 使用`collect()`,我們將信息流轉換為國家列表。 ```java [Country{name=Latvia, population=1978000}, Country{name=Slovakia, population=5424000}, Country{name=Hungary, population=9845000}, Country{name=Poland, population=38485000}, Country{name=Germany, population=81084000}] ``` 這是輸出。 這些國家按人口升序排序。 ## 使用`ArrayList`和簡單的 Java 數組 下面的示例使用帶有簡單 Java 數組的`ArrayList`。 `com/zetcode/ListToArray.java` ```java package com.zetcode; import java.util.Arrays; import java.util.List; public class ListToArray { public static void main(String[] args) { List<String> planets = Arrays.asList("Mercury", "Venus", "Earth", "Mars", "Jupiter", "Saturn", "Uranus", "Neptune"); System.out.println(planets); String[] planets2 = planets.toArray(new String[0]); System.out.println(Arrays.toString(planets2)); } } ``` `ArrayList`轉換為數組,反之亦然。 ```java List<String> planets = Arrays.asList("Mercury", "Venus", "Earth", "Mars", "Jupiter", "Saturn", "Uranus", "Neptune"); ``` 使用`Arrays.asList()`方法,我們創建了一個由指定數組支持的固定大小的列表。 ```java String[] planets2 = planets.toArray(new String[0]); ``` `ArrayList`的`toArray()`用于將列表轉換為數組。 ## 流到列表的轉換 可以使用收集器將 Java 流轉換為列表。 `com/zetcode/ToList.java` ```java package com.zetcode; import java.util.List; import java.util.stream.Collectors; import java.util.stream.Stream; public class ToList { public static void main(String[] args) { var words = Stream.of("forest", "eagle", "river", "cloud", "sky"); List<String> words2 = words.collect(Collectors.toList()); System.out.println(words2.getClass()); } } ``` 我們有一串串的字符串。 我們使用`Collectors.toList()`將流轉換為列表。 ```java class java.util.ArrayList ``` 這是輸出。 在本教程中,我們使用了 Java `ArrayList`容器。 您可能也對以下相關教程感興趣: [Java `HashMap`教程](/java/hashmap), [Java `HashSet`教程](/java/hashset), [Java 教程](/lang/java/), [Google Guava 簡介](/articles/guava/) ,[在 Java 中過濾列表](/java/filterlist/),或[在 Java 中讀取網頁](/articles/javareadwebpage/)。 列出所有 [Java 教程](/all/#java)。
                  <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>

                              哎呀哎呀视频在线观看