欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費電子書(shū)等14項超值服

開(kāi)通VIP
Java 集合Collection與List的詳解

1.什么是集合

存儲對象的容器,面向對象語(yǔ)言對事物的體現都是以對象的形式,所以為了方便對多個(gè)對象的操作,存儲對象,集合是存儲對象最常用的一種方式。

集合的出現就是為了持有對象。集合中可以存儲任意類(lèi)型的對象,而且長(cháng)度可變。在程序中有可能無(wú)法預先知道需要多少個(gè)對象,那么用數組來(lái)裝對象的話(huà),長(cháng)度不好定義,而集合解決了這樣的問(wèn)題。

2.集合和數組的區別

數組和集合類(lèi)都是容器

數組長(cháng)度是固定的,集合長(cháng)度是可變的。數組中可以存儲基本數據類(lèi)型,集合只能存儲對象數組中存儲數據類(lèi)型是單一的,集合中可以存儲任意類(lèi)型的對象。

集合類(lèi)的特點(diǎn)

用于存儲對象,長(cháng)度是可變的,可以存儲不同類(lèi)型的對象。

數組的缺點(diǎn)

存儲類(lèi)型單一的數據容器,操作復雜(數組一旦聲明好不可變)

3.集合的分類(lèi)

集合做什么

1:將對象添加到集合

2:從集合中刪除對象

3: 從集合中查找一個(gè)對象

4:從集合中修改一個(gè)對象就是增刪改查

注意:集合和數組中存放的都是對象的引用而非對象本身

Java工程師對不同的容器進(jìn)行了定義,雖然容器不同,但是還是有一些共性可以抽取最后抽取了一個(gè)頂層接口,那么就形成了一個(gè)集合框架。如何學(xué)習呢?當然是從頂層學(xué)起,頂層里邊具有最共性,最基本的行為。具體的使用,就要選擇具體的容器了。為什么?因為不斷向上抽取的東西有可能是不能創(chuàng )建對象的.抽象的可能性很大,并且子類(lèi)對象的方法更多一些.所以是看頂層,創(chuàng )建底層。那么集合的頂層是什么呢 叫做Collection

集合框架體系

[java] view plain copy print?---|Collection: 單列集合              ---|List: 有存儲順序, 可重復                  ---|ArrayList:  數組實(shí)現, 查找快, 增刪慢                              由于是數組實(shí)現, 在增和刪的時(shí)候會(huì )牽扯到數組                                                  增容, 以及拷貝元素. 所以慢。數組是可以直接                                                  按索引查找, 所以查找時(shí)較快                  ---|LinkedList: 鏈表實(shí)現, 增刪快, 查找慢                              由于鏈表實(shí)現, 增加時(shí)只要讓前一個(gè)元素記住自                                                 己就可以, 刪除時(shí)讓前一個(gè)元素記住后一個(gè)元                                                 素, 后一個(gè)元素記住前一個(gè)元素. 這樣的增刪效                                               率較高但查詢(xún)時(shí)需要一個(gè)一個(gè)的遍歷, 所以效率                                                  較低                  ---|Vector: 和ArrayList原理相同, 但線(xiàn)程安全, 效率略低                               和ArrayList實(shí)現方式相同, 但考慮了線(xiàn)程安全問(wèn)                                                  題, 所以效率略低              ---|Set: 無(wú)存儲順序, 不可重復                  ---|HashSet                  ---|TreeSet                  ---|LinkedHashSet  ---| Map: 鍵值對          ---|HashMap          ---|TreeMap          ---|HashTable          ---|LinkedHashMap

為什么出現這么多集合容器,因為每一個(gè)容器對數據的存儲方式不同,這種存儲方式稱(chēng)之為數據結構(data structure)

注意 --集合和數組中存放的都是對象的引用。

4.什么時(shí)候該使用什么樣的集合

5.集合類(lèi)Collection

Collection接口有兩個(gè)子接口:List(鏈表|線(xiàn)性表)和Set(集)

1.特點(diǎn):

Collection中描述的是集合共有的功能(CRUD)

List可存放重復元素,元素存取是有序的

Set不可以存放重復元素,元素存取是無(wú)序的

java.util.Collection          ---| Collection     描述所有接口的共性              ----| List接口    可以有重復元素的集合              ----| Set  接口   不可以有重復元素的集合

2:學(xué)習集合對象

學(xué)習Collection中的共性方法,多個(gè)容器在不斷向上抽取就出現了該體系。發(fā)現Collection接口中具有所有容器都具備的共性方法。查閱API時(shí),就可以直接看該接口中的方法。并創(chuàng )建其子類(lèi)對象對集合進(jìn)行基本應用。當要使用集合對象中特有的方法,在查看子類(lèi)具體內容。

查看api 文檔Collection在在java.util中(注意是大寫(xiě)Collection)

注意在現階段遇到的 E T 之類(lèi)的類(lèi)型,需要暫時(shí)理解為object  因為涉及到了泛型.

3:創(chuàng )建集合對象,使用Collection中的List的具體實(shí)現類(lèi)ArrayList

Collection coll=new Arraylist();

6.Collection接口的共性方法

增加:          1:add() 將指定對象存儲到容器中                        add 方法的參數類(lèi)型是Object 便于接收任意對象          2:addAll() 將指定集合中的元素添加到調用該方法和集合中  刪除:          3:remove() 將指定的對象從集合中刪除          4:removeAll() 將指定集合中的元素刪除  修改          5:clear() 清空集合中的所有元素  判斷          6:isEmpty() 判斷集合是否為空          7:contains() 判斷集合何中是否包含指定對象                        8:containsAll() 判斷集合中是否包含指定集合                              使用equals()判斷兩個(gè)對象是否相等    獲取:           9:int size()    返回集合容器的大小    轉成數組        10: toArray()   集合轉換數組  

增加:

 1 public static void main(String[] args) {   2         Collection list = new ArrayList();   3         // 增加:add() 將指定對象存儲到容器中   4         list.add("計算機網(wǎng)絡(luò )");   5         list.add("現代操作系統");   6         list.add("java編程思想");   7         System.out.println(list);   8         // [計算機網(wǎng)絡(luò ), 現代操作系統, java編程思想]   9           10         // 增加2 將list容器元素添加到list2容器中  11         Collection list2 = new ArrayList();  12         list2.add("java核心技術(shù)");  13         list2.addAll(list);  14         list2.add("java語(yǔ)言程序設計");  15         System.out.println(list2);  16         // [java核心技術(shù), 計算機網(wǎng)絡(luò ), 現代操作系統, java編程思想, java語(yǔ)言程序設計]  17     } 

刪除:

1 // 刪除1 remove  2         boolean remove = list2.remove("java核心技術(shù)");  3         System.out.println(remove); // true  4         System.out.println(list2); //  5         //刪除2 removeAll() 將list中的元素刪除  6         boolean removeAll = list2.removeAll(list);  7         System.out.println(removeAll);//true  8         System.out.println(list2);//[java語(yǔ)言程序設計]  

修改:

 1 public static void main(String[] args) {   2         Collection list = new ArrayList();   3         // 增加:add() 將指定對象存儲到容器中   4         list.add("計算機網(wǎng)絡(luò )");   5         list.add("現代操作系統");   6         list.add("java編程思想");   7         list.add("java核心技術(shù)");   8         list.add("java語(yǔ)言程序設計");   9         System.out.println(list);  10         // 修改 clear() 清空集合中的所有元素  11         list.clear();  12         System.out.println(list); //[]   13     }  

判斷:

 1 public static void main(String[] args) {   2         Collection list = new ArrayList();   3         // 增加:add() 將指定對象存儲到容器中   4         list.add("計算機網(wǎng)絡(luò )");   5         list.add("現代操作系統");   6         list.add("java編程思想");   7         list.add("java核心技術(shù)");   8         list.add("java語(yǔ)言程序設計");   9         System.out.println(list);  10           11         boolean empty = list.isEmpty();  12         System.out.println(empty);// false  13         boolean contains = list.contains("java編程思想");  14         System.out.println(contains);// true  15         Collection list2 = new ArrayList();  16         list2.add("水許傳");  17         boolean containsAll = list.containsAll(list2);  18         System.out.println(containsAll);// false  19   20     }  

獲?。?/p>

 1 public static void main(String[] args) {   2         Collection list = new ArrayList();   3         // 增加:add() 將指定對象存儲到容器中   4         list.add("計算機網(wǎng)絡(luò )");   5         list.add("現代操作系統");   6         list.add("java編程思想");   7         list.add("java核心技術(shù)");   8         list.add("java語(yǔ)言程序設計");   9         System.out.println(list);  10         // 獲取  集合容器的大小   11         int size = list.size();  12         System.out.println(size);   13     } 

下面寫(xiě)個(gè)例子~集合中添加自定義對象:

 1 public static void main(String[] args) {   2    3         // 創(chuàng  )建集合對象   4         Collection coll = new ArrayList();   5    6         // 創(chuàng  )建Person對象   7         Person p1 = new Person("jack", 25);   8         Person p2 = new Person("rose", 22);   9         Person p3 = new Person("lucy", 20);  10         Person p4 = new Person("jack", 25);  11   12         // 集合中添加一些Perosn  13   14         // 刪除指定Person  15   16         // 刪除所有Person  17   18         // 判斷容器中是否還有Person  19   20         // 判斷容器中是否包含指定Person  21   22         // 獲取容器中Person的個(gè)數  23   24         // 將容器變?yōu)閿到M,遍歷除所有Person  25   26     }  

分析:

1:Person類(lèi)

    1:姓名和年齡

     2:重寫(xiě)hashCode和equals方法

          1:如果不重寫(xiě),調用Object類(lèi)的equals方法,判斷內存地址,為false

                    1:如果是Person類(lèi)對象,并且姓名和年齡相同就返回true

          2:如果不重寫(xiě),調用父類(lèi)hashCode方法

                   1:如果equals方法相同,那么hashCode也要相同,需要重寫(xiě)hashCode方法

          3:重寫(xiě)toString方法

                   1:不重寫(xiě),直接調用Object類(lèi)的toString方法,打印該對象的內存地址

Person類(lèi):

 1 class Person {   2     private String name;   3     private int age;   4    5     public Person() {   6    7     }   8    9     public Person(String name, int age) {  10   11         this.name = name;  12         this.age = age;  13     }  14   15     @Override  16     public int hashCode() {  17         return this.name.hashCode() + age;  18     }  19   20     @Override  21     public boolean equals(Object obj) {  22         if (!(obj instanceof Person)) {  23             return false;  24         }  25         Person p = (Person) obj;  26         return this.name.equals(p.name) && this.age == p.age;  27     }  28   29     @Override    30     public String toString() {  31         return "Person :name=" + name + ", age=" + age;  32     }  33   34 }  
 1 public static void main(String[] args) {   2         Person p1 = new Person("張三", 19);   3         Person p2 = new Person("李四", 20);   4         Person p3 = new Person("王五", 18);   5         Collection list = new ArrayList();   6         list.add(p1);   7         list.add(p2);   8         list.add(p3);   9         // isEmpty() 判斷集合是否為空  10         boolean empty = list.isEmpty();  11         System.out.println(empty);  12         // 返回集合容器的大小  13         int size = list.size();  14         System.out.println(size);  15          // contains()判斷集合何中是否包含指定對象  16         boolean contains = list.contains(p1);  17         System.out.println(contains);  18   19         // remove(); 將指定的對象從集合中刪除  20         list.remove(p1);  21           22         // clear() 清空集合中的所有元素  23         list.clear();  24         System.out.println(list);  25   26     }

7.List集合:

---| Iterable     接口             Iterator iterator()      ----| Collection     接口          ------| List      接口 元素可以重復,允許在指定位置插入元素,并通過(guò)索引來(lái)訪(fǎng)問(wèn)元素  

List集合特有方法:

1:增加          void add(int index, E element) 指定位置添加元素                      boolean addAll(int index, Collection c) 指定位置添加集合    2:刪除  E remove(int index) 刪除指定位置元素    3:修改          E set(int index, E element)    返回的是需要替換的集合中的元素  4:查找:          E get(int index)             注意: IndexOutOfBoundsException          int indexOf(Object o)         // 找不到返回-1          lastIndexOf(Object o)   5:求子集合           List<E> subList(int fromIndex, int toIndex) // 不包含toIndex  

增加:

 1 public static void main(String[] args) {   2         List list = new ArrayList();   3         // 增加:add() 將指定對象存儲到容器中   4         list.add("計算機網(wǎng)絡(luò )");   5         list.add("現代操作系統");   6         list.add("java編程思想");   7         list.add("java核心技術(shù)");   8         list.add("java語(yǔ)言程序設計");   9         System.out.println(list);  10         // 刪除0角標元素  11         Object remove = list.remove(0);  12         System.out.println(remove);  13     }

修改:

 1 public static void main(String[] args) {   2         List list = new ArrayList();   3         // 增加:add() 將指定對象存儲到容器中   4         list.add("計算機網(wǎng)絡(luò )");   5         list.add("現代操作系統");   6         list.add("java編程思想");   7         list.add("java核心技術(shù)");   8         list.add("java語(yǔ)言程序設計");   9         System.out.println(list);  10         // 修改2角標位置的書(shū),返回的原來(lái)2角標位置的書(shū)  11         Object set = list.set(2, "邊城");  12         System.out.println(set); //java編程思想  13         System.out.println(list);   14           15     } 

查找:

 1 List list = new ArrayList();   2         // 增加:add() 將指定對象存儲到容器中   3         list.add("計算機網(wǎng)絡(luò )");   4         list.add("現代操作系統");   5         list.add("java編程思想");   6         list.add("java核心技術(shù)");   7         list.add("java語(yǔ)言程序設計");   8         System.out.println(list);   9         // 查找: E get(int index)  注意角標越界  10         Object set = list.get(list.size() - 1);  11         System.out.println(set); // java語(yǔ)言程序設計  12         System.out.println(list);  13         list.get(list.size()); //IndexOutOfBoundsException  14     } 
 1 public static void main(String[] args) {   2         List list = new ArrayList();   3         // 增加:add() 將指定對象存儲到容器中   4         list.add("計算機網(wǎng)絡(luò )");   5         list.add("現代操作系統");   6         list.add("java編程思想");   7         list.add("java核心技術(shù)");   8         list.add("java語(yǔ)言程序設計");   9         list.add("java編程思想");  10         System.out.println(list);  11         // 查找: E get(int index) 注意角標越界  12         Object set = list.get(list.size() - 1);  13         System.out.println(set); // java語(yǔ)言程序設計  14         System.out.println(list);  15         // list.get(list.size()); //IndexOutOfBoundsException  16   17         // indexOf(Object o) 返回第一次出現的指定元素的角標  18         int indexOf = list.indexOf("java編程思想");  19         System.out.println(indexOf); // 2  20         // 沒(méi)有找到,返回-1  21         int indexOf2 = list.indexOf("三國志");  22         System.out.println(indexOf2); // -1  23   24         // lastIndexOf 返回最后出現的指定元素的角標  25         int lastIndexOf = list.lastIndexOf("java編程思想");  26         System.out.println(lastIndexOf); // 5  27     } 

 

本站僅提供存儲服務(wù),所有內容均由用戶(hù)發(fā)布,如發(fā)現有害或侵權內容,請點(diǎn)擊舉報。
打開(kāi)APP,閱讀全文并永久保存 查看更多類(lèi)似文章
猜你喜歡
類(lèi)似文章
java 容器 List
JDK5的新特性:增強for
java list 交集 并集 差集 去重復并集
JAVA代碼中的for (String s : args)的解釋
Java 5.0 中增強的for循環(huán)——for/in (for each) - 一杯苦咖啡 - ITeye技術(shù)網(wǎng)站
ArrayList集合常用的方法詳細講解
更多類(lèi)似文章 >>
生活服務(wù)
分享 收藏 導長(cháng)圖 關(guān)注 下載文章
綁定賬號成功
后續可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服

欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久