1. 程式人生 > 實用技巧 >java回顧之單列集合、泛型、資料結構

java回顧之單列集合、泛型、資料結構

java回顧之單列集合、泛型、資料結構

一、collection

1.1集合概述

集合的作用:集合是一個容器,可以儲存同種型別的多個數據

集合的特點:集合的長度是可變的,只能儲存引用資料型別,不能儲存基本資料型別,可以存基本資料型別的包裝類



  Collection常用方法

add:新增 clear:清空 remove:刪除某個 contains:是否包含 isEmpty:判斷集合是否為空

toArray 將集合裝成Object[]型別

二、Iterator迭代器

2.1迭代器的作用

幫助Collection集合遍歷元素的。用迭代器遍歷集合要先獲取迭代器的物件

快捷鍵:itit

 Collection<String> coll = new ArrayList<>();
        獲取迭代器物件
    Iterator<String> it=coll.iterator();
    
    迭代器的方法有  
    next() 獲取集合中的元素
    hasNext() 判斷集合中有沒有下一個元素
    remove()刪除當前元素

    while(it.hasNext()){
          String s=it.next()
    }    

  迭代器原理

lastRet是下標

使用迭代器遍歷集合會出現併發修改異常,是因為在遍歷集合的時候,進行了增刪的操作,目前新增無解決辦法,刪除使用迭代器刪除,就可以避免迭代器異常

 //使用迴圈獲取每一個元素
        while(it.hasNext()){

            String s = it.next();
            if(s.equals("柳巖")){
                //使用迭代器物件刪除當前元素
                it.remove();
            }
        }

2.2、增強for迴圈

增強for迴圈也是可以遍歷collection集合和陣列

快捷鍵:iter

格式
for(元素的型別 元素名 : 集合/陣列){
    
} 
好處是簡單快捷,缺點是底層也是迭代器,也會出現併發修改異常,而且不能使用索引

3、泛型

3.1泛型的作用

規定了要儲存的型別,取出來也方便使用,給集合加上泛型,一看就知道里面的資料是什麼型別

當使用未定義的泛型的時候,只有在呼叫的時候確定型別 格式:<大寫字母>

比如類上定義泛型格式

//泛型代表的是某一種引用資料型別
public class MyArrayList<T> {
    
}
在每次建立物件時確定具體的型別
  //建立物件
        MyArrayList<String> list = new MyArrayList<>();
        //泛型確定為了字串型別  

比如方法上定義泛型格式

在每次呼叫方法時確定具體型別
public class AAA {

    //方法上定義泛型
    public <T> void method(T t){
    }
}
 //建立物件
        AAA a = new AAA();
        //呼叫方法泛型確定為字串
        a.method("abc");
        //呼叫方法泛型確定為整數
        a.method(123);

介面上定義泛型

//泛型代表某種引用資料型別
//泛型的定義是在<>寫一個大寫字母

public interface MyColl<T> {

    void method(T t);
}
- 在定義子類時確定泛型具體的型別
public class MyAAA implements MyColl<String>{

    //在子類中確定了泛型的具體型別
    @Override
    public void method(String s) {

    }
}
- 在子類上不確定具體型別,就把介面的泛型變成類上的泛型
public class MyBBB<T> implements MyColl<T> {

    //重寫父類抽象方法
    @Override
    public void method(T t) {

    }
}
然後在建立物件的時候,確定泛型的型別
  MyBBB<String> mb = new MyBBB<>();
        mb.method("123");

3.2 泛型萬用字元

<?> :可以傳遞任何的泛型型別
<? extends XXX> :可以傳遞XXX以及XXX的子類型別
<? super XXX> :可以傳遞XXX以及XXX的父類型別

4、資料結構

4.1棧和佇列

棧:

  棧是一個線性表結構,只有一個出入口,從同一個口存放資料和移出資料 特點:先入後出

佇列:

  佇列也是一個線性表,佇列有兩個開口,從一邊存入資料,從另一邊取出資料 特點:先入先出

 陣列:陣列是在記憶體中開闢的一塊連續的記憶體空間 特點:增刪慢,查詢快

 

連結串列:連結串列在記憶體中時不連續的記憶體空間,資料結構有單向連結串列和雙向連結串列,先說單向連結串列,單向連結串列的意思就是前一個節點記錄後一個節點的位置。特點:增刪快,查詢慢