javaSE基礎-集合框架筆記

/**
     * 在迭代時不可通過集合對象的方法操作集合中的元素 比如 : list.add(); list.set();等
     * List集合特有迭代器ListIterator是Iterator的子接口,因爲有下標
     */
    public static void listIterator(){
        List<String> list = new ArrayList<String>();
        list.add("1");
        list.add("2");
        list.add("3");

        ListIterator li = list.listIterator();
        //正向迭代
        while (li.hasNext()){
            if(li.next() == "2")
                li.set("4");
        }
        System.out.println(list);
        //反向迭代
        while (li.hasPrevious()){
            System.out.println(li.previous());
        }
    }

LikedList特有方法:

在這裏插入圖片描述
remove方法如果集合爲空則會報NoSuchElementException 錯
在這裏插入圖片描述
HashSet集合保證元素唯一的方法
通過元素的兩個方法,hashCode()和equals()方法來完成,如果元素的hashCode值相同,纔會調用equals方法判斷是否爲true,如果元素的hashCode值不同,不會調用equals方法,所以要完成屬性相同則視爲同一對象則需要複寫hashCode()和equals()方法
注意
  hashSet 對於判斷元素是否存在,以及刪除等操作,依賴的方法是元素的hashCode和equals方法
  ArrayList判斷元素是否相同用equals一個方法
Set集合:無序,不可重複元素
  HashSet:數據結構是哈希表,線程是非同步的,保證元素唯一的方法看上述
  TreeSet:可以對set集合中的元素進行排序,底層數據結構爲二叉樹(紅黑樹),保證元素唯一性的依據:compareTo方法return 0;
  排序的實現方式:
    第一種:讓元素自身具備比較性。元素需要實現Comparable接口,覆蓋compareTo方法,也稱爲元素的自然排序或者默認排序
    第二種:當元素不具備比較性或者具備的比較性不是所需要的,這是需要讓集合自身具備比較性。在集合初始化時就具有比較方式,定義比較器(定義一個類實現Comparator接口,覆蓋compare方法),將比較器對象做爲參數傳遞給TreeSet集合的構造函數
    當兩種方法都存在時,以比較器爲主

關於Arrays.asList()的使用(將數組轉換爲list集合):
如果數組中的元素都是對象,那麼變成集合時,數組中的元素就直接轉成集合中的元素
如果數組中的元素都是基本數據類型,那麼會將該數組做爲集合中的元素存在(返回的hashCode地址)

Collection.toArray()集合變數組:

List<String> arrayList = new ArrayList<String>();
arrayList.add("sfd");
arrayList.add("ad");
arrayList.add("ads");
/**
其中 String[]長度定義爲集合的長度(size),
如果定義的長度大於size則該方法不會再創建數組,而是使用該傳入數組,其餘元素用默認值填充,
如果定義的長度小於size則該方法內部會創建一個長度爲size的新數組

這裏採用 size定義數組最優
*/
String[] strs = arrayList.toArray(new String[arrayList.size()]);
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章