国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

Core Java筆記 9.集合(I)

2019-11-15 00:13:56
字體:
來源:轉載
供稿:網友
Core java筆記 9.集合(I) - 使用本章重點:
  • Java Collction 設計策略
  • 具體的集合類

Java Collection 設計策略

Java 采用如下策略:

  1. Java Collection 也是采用 interface 和 implementation 分離. 接口本身不關心實現的效率,那是選擇時考慮的.
  2. Java Collection 是核心接口:CollectionIterator.
Interface CollectionIterator

Collection 是 Java Collection Framework 的 super interface.

Collection 核心方法:

public interface Collection<E> extends Iterable<E> {    boolean add(E element);    Iterator<E> iterator();    // other methods ...}public interface Iterable<E> {    Iterator<E> iterator();}

注:add() -- 增iterator() -- 迭代器可以完成:查、刪操作.

Iterator 定義:

public interface Iterator<E> {    E next();    boolean hasNext();    void remove();}

Iterator 用于 loop:

Collection<String> c = ...;Iterator<String> iter = c.iterator();while (iter.hasNext()) {    String element = iter.next();    // do something with element}// Java SE 5.0 for-each loop// 任何實現了 Iterable 接口的對象一起工作,都支持 for-each 語法for (String element : c) {    // do something with element}

具體的集合類

Full Java Collections:

corejava-collections-pic01corejava-collections-pic02

通過測試代碼介紹 Java 核心的集合類的使用.

LinkedList 與 ListIterator

LinkedList: ordered collection(doubly linked list in Java). 它除了擁有普通型的迭代器,還擁有一個增強型迭代器(ListIterator).

ListIterator: 雙向迭代器,而且支持:add() 操作.

interface ListIterator<E> extends Iterator<E> {    void add(E element);    E PRevious();    boolean hasprevious();}

測試代碼:

public class ListsTest {    public static void main(String[] args) {        List<String> staff = new LinkedList<String>();        staff.add("Amy");        staff.add("Bob");        staff.add("Carl");        System.out.println(staff);  // [Amy, Bob, Carl]        // 測試 iterator        // ?。。。。〉鞯男袨榭梢韵胂笙拢汗鈽?|ABC A|BC AB|C ABC|        Iterator<String> iter = staff.iterator();        // 要點1: 調用 remove() 必須調用 next()[next 和 remove 強關聯]        // iter.remove();           // java.lang.IllegalStateException        // 要點2: 禁止重復 remove()        // iter.remove();        // iter.remove();           // java.lang.IllegalStateException        // 要點3: 刪除操作        Iterator<String> iter2 = staff.iterator();        String first = iter2.next();        iter2.remove();             // 刪除第一個元素        String second = iter2.next();        iter2.remove();             // 刪除第二個元素        System.out.println(staff);  // [Carl]        // 測試 ListIterator        ListIterator<String> listIter = staff.listIterator();        listIter.add("Tom");        listIter.add("Jerry");        listIter.next(); // skip past first element        listIter.add("Juliet");        System.out.println(staff);  // [Tom, Jerry, Carl, Juliet]        while (listIter.hasNext()) {            listIter.next();        }        listIter.add("Jetty");        System.out.println(staff);  // [[Tom, Jerry, Carl, Juliet, Jetty]    }}
ArrayListSet

Set 兩個常用的實現: HashSet 和 TreeSet.TreeSet 的元素必須實現 Comparable, 或者初始化時 提供一個比較器。

QueueDeque

Queue: 隊列. 提供 add(offer), remove(poll), element(peek).Deque: 雙端隊列. 擴展自 Queue, 提供 head 和 tail 的add(offer), remove(poll), get(peek)操作.Deque的典型實現: ArrayDeque 和 LinkedList.

PriorityQueue

PriorityQueue: 優先隊列,要求元素是 Comparable 或者提供 Comparator.

Map

Map 的兩個常用實現: HashMap 和 TreeMap.Map 的三個視圖.

Set<K> keySet();Collection<V> values();Set<Map.Entry<K, V>> entrySet(); // Map 其實是利用Set 實現的,其實就是 元素是 Map.Entry 類型的 Set


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 德阳市| 元氏县| 鹤峰县| 门头沟区| 尚志市| 满城县| 奉节县| 淅川县| 威远县| 任丘市| 永德县| 大丰市| 紫阳县| 任丘市| 怀柔区| 澎湖县| 穆棱市| 西和县| 宁夏| 喜德县| 陈巴尔虎旗| 柳州市| 凌海市| 噶尔县| 定结县| 饶平县| 肇东市| 景东| 苍梧县| 临城县| 蛟河市| 武陟县| 惠水县| 武鸣县| 南乐县| 清水河县| 盐源县| 南投县| 西充县| 宜兰市| 万州区|