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

首頁 > 編程 > Java > 正文

java筆記02(集合)

2019-11-07 23:55:29
字體:
來源:轉載
供稿:網友

1、集合類:java.util

集合用于存儲對象,長度可變,可以存儲不同類型的對象; 數組也存儲對象,但是數組是固定長度的,數組只能存同一種類型;

2、為什么會出現這么多的容器呢?

因為每一個容器對數據的存儲方式都有不同,這個存儲方式稱為:數據結構

3、迭代器:用于遍歷集合中的元素

Iterator tt = al.itrator();//這個tt就好比是al集合的一個游標while(tt.hasNext()) { S.o.p(it.next());}

4、List特有方法,凡是可以操作角標的方法都是該體系特有的方法

增: add(index,element); addAll(index,Collection);

刪: remove(index);

修改: set(index,element);

查: get(index); subList(from to); ListIterator();

通過indexOf獲取對象的位置 sop(al.indexOf(“java02”));

在迭代時,不可以通過集合對象的方法操作集合中的元素,因為會發生并發異常

5 ListItrator

是List集合特有的迭代器,是Iterator的子接口,在迭代時,只能用迭代器的方法操作集合中的元素,可以在遍歷過程中增刪改查;

6 Set

元素是無序的(存入和取出可能不一致),不可以重復,存入的時候是按照哈希碼的大小順序存入

一般的,描述的事物需要存入hashSet時,就需要重寫hashCode和equals方法;

7 hashSet是如何保證元素的唯一性呢?

是通過元素的兩個方法,hashCode和equals來完成,如果元素的hashCode值相同,才會判斷equals是否為true,如果元素的hashCode值不同,不會調用equals;

注意:對于判斷元素是否存在,以及刪除等操作,依賴的方法是元素的hashCode和equals方法;

8 TreeSet

可以對集合中的元素進行排序,但是往集合中添加自定義對象時,必須實現Comparable接口,重寫compareTo方法;采用的是二叉樹數據結構

TreeSet保證元素唯一性的依據是:compareTo方法return 0;

1:大于;-1:小于; 0:等于,大于放右邊,小于放左邊,等于不放

往TreeSet中添加自定義的對象時,由于TreeSet中有自然順序對添加的對象進行排序,如果沒有實現Comparable接口并實現compareTo方法,會出現classCastException:類型轉換異常

這里寫圖片描述

這里寫圖片描述

這里寫圖片描述

這里寫圖片描述

9 泛型:

ArrayList al = new ArrayList<>(); al里面只能存儲字符串對象;

10 泛型好處:

將運行時期出現的問題ClassCastException,轉移到編譯時期,方便與程序員解決問題,安全 避免了強制轉換

11 泛型在集合中很常見

什么時候定義泛型類:當類中要操作的引用數據類型不確定的時候,早期定義Object來完成,現在定義泛型來擴展

//泛型類:class Demo<T> { public void show(T t) {sop(t);} public void PRint(T t) {sop(t);}}main() { Demo<String> d = new Demo<String>(); //此后d調用方法傳遞的參數必須是String類型!!已經固定下來}//泛型方法:為了讓d調用方法時,傳遞不同類型的參數,就定義泛型方法class Demo { public <T> void show(T t) {sop(t);} public <Q> void prit(Q q) {sop(q);}} main() { Demo d = new Demo(); d.show("haha"); d.prit(2); //此時,d調用的方法傳遞的參數可以是各種類型}

12 泛型限定:

能傳的參數為Person類以其子類

public void dayin(ArrayList<? extends Person> a;) { Iterator<? extends Person> tt = al.iterator(); .....}

? extends E :可以接受E類及其子類 ? super E :可以接受E類及其父類

13 Map集合

和Collection并列,該集合存儲鍵值對,一對一對往里存,而且要保證鍵的唯一性;

Map |–Hashtable:哈希表數據結構,不可以存null鍵null值,線程同步 |–HashMap :哈希表數據結構,允許null鍵null值,不同步 |–TreeMap :二叉樹數據結構,不同步,可以用于給鍵進行排序

Map

Set<Map.Entry<Integer, String>> ss = map.entrySet();Iterator<Map.Entry<Integer, String>> tt = ss.iterator(); while(tt.hasNext()) { Map.Entry<Integer, String> me = tt.next(); System.out.println(me.getKey() +" : "+me.getValue());}

將map集合中的映射關系取出存入到Set集合中,集合中的元素是映射關系,這一個個的映射關系就是Map.Entry對象,獲取到該對象后,就可以通過Map.Entry中的getKey個getValue方法獲取鍵和值

Collection values();獲取該Map所有的value存到Collection集合中 Collection coll = map.values;

Set keySet() ;獲取該Map所有的Key存到Set集合中 Set ss = map.keySet();

15 Collections

專門用于對集合進行操作的工具類,里面都是static方法

List li = new ArrayList();Collections.sort(li);//給li集合排序Collections.Max(li);//返回最后一個元素Collections.binarySearch(li,"aaa"); //返回aaa的角標Collections.fill(li,"pp");//將li集合中所有的元素都替換成ppCollections.replaceAll(li,oldVal,newVal);//用新值替換舊值Collections.reverse(li); //反轉指定列表中元素的順序reverSEOrder(); //該方法返回一個Comparator子類對象,強行逆轉自然順序reverseOrder(Comparator cmp); //強行逆轉指定比較器cmp的順序

16 Arrays:

用于操作數組的工具類,也都是static方法

將數組變成List集合,Arrays類下的asList(); List li = Array.asList(arr); 把數組變成集合后,就可以使用集合的思想和方法來操作數組中的元素 比如 li.contains(“aaa”); 但是不可以使用集合的增刪方法;

如果數組中的元素都是對象,那么變成集合時,數組中的元素就直接轉成集合中的元素;

如果數組中的元素都是基本數據類型,因為集合存儲的都是對象,所以會將該數組作為集合中的元素存儲

集合變數組: Collection接口中的toArray方法。 Integer[] arr = al.toArray(new Integer[0]); System.out.println(Arrays.toString(arr));

17 增強的for循環

只能用于遍歷,不能對集合進行操作

ArrayList<String> al = new ArrayList<String>();...for(String s : al) { sop(s);}

增強for的局限性:必須要有被遍歷的對象,比如不能打印hello 100次;

18 可變參數

注意,可變參數要定義在所有參數的最后面,以數組的形式傳遞

void show(String str, int ... arr) { sop(arr.length);}
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 临沧市| 朔州市| 剑河县| 泸定县| 双鸭山市| 建平县| 嘉鱼县| 芮城县| 启东市| 东海县| 临城县| 江华| 合山市| 武鸣县| 凤阳县| 台湾省| 龙门县| 普陀区| 潼关县| 乌拉特后旗| 建宁县| 肥城市| 鹰潭市| 黑水县| 民丰县| 西乌珠穆沁旗| 甘洛县| 嘉义县| 凤台县| 明溪县| 澎湖县| 新闻| 邻水| 陆丰市| 东乌珠穆沁旗| 深州市| 东乡| 红原县| 眉山市| 青浦区| 阳朔县|