Java 學習筆記 兩大集合框架Map和Collection

兩大框架圖解




Collection接口

由第一張圖,咱們能夠知道,Collection接口的子接口有三種,分別是List接口,Set接口和Queue接口數組

List接口

容許有重複的元素,元素按照添加的順序進行排序框架

  1. 接口方法性能

    • void add(int index,Objext o) 在集合的指定位置插入元素
    • Object get(int index) 返回集合中某個指定位置的元素
    • int indexOf(Object o) 返回第一次出現該元素的索引(下標),若是不包含此元素,返回-1
    • int lastIndexOf(Object o) 返回最後一次出現該元素的索引(下標),若是不包含此元素,返回-1
    • Object remove(int index) 移除集合某個索引的元素
    • Object set(int index,Object o) 用指定的元素替換集合中某個指定下標的數據元素
  2. 接口實現類的使用測試

    • ArrayList
      新增方法:
      addFirst
      getFirst
      removeFirst
      addLast
      getLast
      removeLast3d

      特色:在存儲方式上是採用數組進行順序存儲code

      List list = new ArrayList();
        List<泛型> list = new ArrayList<>();
    • LinkedListblog

      特色:在存儲方式上是採用鏈表進行鏈式存儲排序

      LinkedList<> list = new LinkedList<>();

PS:因爲ArrayList是採用數組進行存儲的,因此添加元素或者是刪除元素時,須要批量移動元素,因此性能較差。但查詢元素的時候,能夠經過下標直接進行訪問,因此遍歷元素或隨機訪問元素的時候效率高。
而LinkedList與ArrayList相反繼承

list迭代

若是想在list的迭代中操做list中的元素,例如刪除,添加,使用listiterator,listiterator有add,set,remove索引

List<Book> books = new ArrayList<>();
//添加數據
for (int i = 1; i < 10; i++) {
    Book book = new Book();
    book.setBno("00" + i);
    books.add(book);
}
System.out.println(books.size());
//經過ListIterator在遍歷刪除數據
ListIterator<Book> bookListIterator = books.listIterator();
String bno = "002";
while (bookListIterator.hasNext()) {
    Book next = bookListIterator.next();
    if (next.getBno().equals(bno)) {
        bookListIterator.remove();
        break;
    }
}
//輸出結果測試
System.out.println("-----");
System.out.println(books.size());
for (Book book : books) {
    System.out.println(book.toString());
}

Set接口

不容許有重複的元素,元素沒有順序

  1. 接口方法

    add clear contains remove
    和以前的List差很少,這裏就很少說

  2. 接口實現類的使用
    • HashSet
      下面的圖片很明顯,體現了沒有重複元素的規則

      **通常使用的話仍是使用泛型使用**
      
            Set<Book> books = new HashSet<>();
    • TreeSet
      由以前介紹的第四張圖能夠看到,TreeSet既繼承了Set接口,也繼承了SortedSet接口(排序接口)

      沒有使用泛型,默認使用的是String類型,String類實現了Comparable接口,默認是按字典排序,可是圖中明顯沒有實現排序?不理解。。

      我使用英文開頭,才能實現排序

    • Set集合遍歷
    //Iterator
                Iterator iterator = set.iterator();
                while (iterator.hasNext()){
                    System.out.println(iterator.next());
                }
                //foreach
                for (String s:set) {
                    System.out.println(s);
                }

Queue接口

較少使用。。

Map接口

使用鍵值對(key value)進行數據存儲,key與value是一種映射關係
  1. 接口方法
    • Object put(Object key,Object value) 將一個鍵值對存到Map中
    • Object get(Object key) 由key得到value
    • Object remove(Object key) 刪除該鍵值對
    • Set keyset() 返回當前包含當前map的全部key的Set集合
    • Collection values() 返回當前包含當前map的全部value的Collection集合
    • boolean containsKey(Object key) 是否包含某個key
    • boolean containsValue(Object Value) 是否包含某個Value
    • int size() 返回當前map集合鍵值對的個數
  2. 接口實現類的使用

    • HashMap的使用

      Map<String,String> map = new HashMap<>();
      Map<Integer,String> map = new HashMap<>();

    PS: 通常在開頭聲明鍵值對的類型,若是在後面聲明的話,很大可能會報錯
    • TreeMap的使用

      Map<String,String> map = new TreeMap<>();

    與以前的TreeSet同樣,TreeMap也是實現了SortedMap藉口,帶有排序,默認是按照key的數值天然排序(也就是升序)

相關文章
相關標籤/搜索