Java學習第十二天

来源:https://www.cnblogs.com/demain/archive/2019/08/07/11318576.html
-Advertisement-
Play Games

1.集合:可以存儲不同類型的對象,隨著對象個數的增加,容量自動增加(頂層是一個介面) 2.為什麼有這麼多的集合? 每種集合底層使用的數據結構是不一樣的,也就是說每種集合存儲數據的特點是不一樣的, 項目中根據數據的特點來選擇不同的集合 3.實現存儲不同類型的對象? Object[] arr =new ...


1.集合:可以存儲不同類型的對象,隨著對象個數的增加,容量自動增加(頂層是一個介面)

2.為什麼有這麼多的集合?
    每種集合底層使用的數據結構是不一樣的,也就是說每種集合存儲數據的特點是不一樣的,
  項目中根據數據的特點來選擇不同的集合

3.實現存儲不同類型的對象?
  Object[] arr =new Object[3];
    //常用方法:定義Object類型的數組就可以實現,但隨著存儲的對象的增加,數組的容量是固定不變的
    //缺點:容量固定

4.集合體系最頂層的是Collection介面:這個介面定義的是整個體系最共性的東西

最共性的功能:
  添加:
    boolean add(Object o)//多態 集合中存儲的都是對象,集合中存儲的是對象的地址
    boolean addAll(Collection<? extends E> c)
  刪除:
    boolean remove(Object o)
    boolean removeAll(Collection<?> c)
    void clean()
  判斷:
    boolean contains(Object o)
    boolean acontainsAll(Collection<?> c)
    boolean isEmpty()//判空
    boolean equals(Object o)//重寫了Object中的equals()方法,功能是比較兩個集合中存儲的數據是否一樣
  獲取:
    Iterator<E> iterator()//獲取集合中的對象,集合遍歷的方法,該方法返回的對象所屬的類實現了Iterator介面
    //使用iterator方法得到集合的內部類對象
    int size()//獲取集合中對象的個數
  集合變數組:
    Object[] toArray()//集合中有幾個對象,數組的長度就是多少

 

 1 用例1:
 2 import java.util.*;
 3 class Demo1 
 4 {
 5 public static void main(String[] args) 
 6 {
 7 Collection coll=new ArrayList();//多態
 8 coll.add("java01");//添加對象
 9 coll.add("java02");
10 coll.add("java03");
11 coll.add(66);// int new Integer(66) 自動裝箱
12 
13 coll.add(p);
14 
15 sop(coll);
16 
17 Collection c = new ArrayList();
18 c.add("hadoop");
19 c.add("spark");
20 
21 coll.addAll(c);//把別的集合中的數據添加到當前集合中
22 
23 sop(coll);
24 
25 coll.remove(66);//刪除某一個對象
26 sop(coll);
27 
28 coll.removeAll(c);
29 sop(coll);
30 
31 boolean boo = coll.contains("java01");//判斷是否包含某個對象
32 sop(boo);
33 boo=coll.containsAll(c);
34 sop(boo);
35 
36 boolean e=coll.isEmpty();
37 sop(e);
38 
39 sop(coll.size());//得到集合中對象的個數
40 
41 
42 Collection d = new ArrayList();
43 d.add("java01");
44 d.add("java02");
45 d.add("java03");
46 
47 e=coll.equals(d);//重寫了Object中的equals()方法,功能是比較兩個集合中存儲的數據是否一樣
48 sop(e);
49 
50 
51 //集合變數組:Object[] toArray() 遍歷
52 Object[] arr = coll.toArray();//集合中有幾個對象,數組的長度就是多少
53 for(int i=0;i<arr.length;i++){
54 sop(arr[i]);
55 }
56 }
57 
58 public static void sop(Object obj){
59 System.out.println(obj);
60 }
61 }

 

 1 用例2:
 2 import java.util.*;
 3 class Demo2 
 4 {
 5 public static void main(String[] args) 
 6 {
 7 //Iterator<E> iterator() 獲取集合中的對象:該方法返回的對象所屬的類實現了Iterator介面
 8 //使用iterator方法得到集合的內部類對象
 9 
10 Collection coll=new ArrayList();
11 
12 coll.add("java01");
13 coll.add("java02");
14 coll.add("java03");
15 
16 Iterator ite=coll.iterator();//迭代器
17 
18 while(ite.hasNext()){
19 Object obj = ite.next();//多態
20 String ss = (String)obj;
21 System.out.println(ss.toUpperCase());
22 }    
23 }
24 }

 

5.list介面:存儲的數據是有序的(有序是指集合中存儲的數據順序和添加數據的順序是一致的),存儲的數據是可以重覆的

6.list的3個子類:
  ArrayList:底層數據結構使用的是數組,線程不安全的,查找速度快,增刪速度慢(數組開闢的記憶體是連續的)
  Vector:底層數據結構使用的是數組,線程安全的,查找速度快,增刪速度慢,被ArrayList替代了
  linkedList:底層數據結構是鏈表,線程不安全的,查找速度慢,增刪速度快


7.list特有的功能:都是可以操作下標的的功能
  增:
    void add(int index,E element)
    boolean addAll(int index,Colletion<? extends E> c)

  刪:
    E remove(int index)//返回被刪除的對象

  改:
    E set(int index,E element)

  查:
    //ListIterator提供了對集合進行添加修改和刪除的功能,可以在實現迭代過程中對集合進行添加修改刪除
    ListIterator<E> ListIterator
    //返回此列表元素的列表迭代器(按適當順序)
    ListIterator<E> ListIterator(int index)

    Lis<E> subList(int fromIndex,int lastIndex)//截取指定list,[x,y)
    E get(int index))


8.Iterator迭代器:得到迭代器是已經明確了集合中的元素
   在集合迭代過程中對集合進行添加,修改,刪除都會引發異常ConcurrentModificationException


9.集合的遍歷:Iterator iterator()
  因為數據存儲在集合的內部,內部類可以直接操作集合內部的數據
  所以集合使用內部類來遍曆數據,因為不同的集合存儲數據的結構不同
  所以遍歷的方式也不同,所以對所有的內部類提取共性的行為
  定義在一個介面中,這個藉口就是Iterator,共性的方式就是
  boolean hasNext()
  object next()
  因此內部類都實現了Iterator介面的


10ListIterator迭代器:提供了對集合進行添加修改和刪除的功能,可以實現在迭代過程中對集合進行添加修改和刪除

 1 LinkedList自己特有的功能:
 2 1:
 3 addFirst() 添加到鏈表的頭
 4 addLast() 添加到鏈表的尾
 5 
 6 
 7 2:getFirst() 得到鏈表的頭節點
 8 getLast() 得到鏈表的尾節點
 9 
10 3:removeFirst() 刪除鏈表的頭節點
11 removeLast() 刪除鏈表的尾節點
12 
13 從jdk1.6出現的
14 
15 offerFirst()
16 offerLast()
17 
18 peekFirst()//集合為空返回null,不會異常
19 peekLast()//集合為空返回null,不會異常
20 
21 pollFirst()//集合為空返回null,不會異常
22 pollLast()//集合為空返回null,不會異常

11.遍歷集合的五種方法:

 1 1.Iterator ite = list.iterator();
 2 while(ite.hasNext()){
 3 Object obj =ite.next();
 4 sop(obj);
 5 }
 6 
 7 2.for(Iterator it=list.iterator();it.hasNext();){
 8 Object o = it.next();
 9 sop(o);
10 }
11 
12 3.for(int i=0;i<list.size();i++){
13 sop(list.get(i));
14 }
15 
16 
17 4.while(!list.isEmpty()){
18 sop(list.remove(0));
19 }
20 
21 5. //實現對集合的遍歷
22 Enumeration en = v.elements();
23 while(en.hasMoreElements()){
24 Object obj = en.nextElement();
25 System.out.println(obj);
26 }

 


12.使用LinkedList實現隊列

 1 import java.util.*;
 2 //實現隊列
 3 class MyQueue
 4 {
 5 private LinkedList link;
 6 
 7 MyQueue(){
 8 link=new LinkedList();
 9 }
10 
11 //進隊
12 public void enQueue(Object obj){
13 link.addLast(obj);
14 }
15 
16 //出隊
17 public Object deQueue(){
18 return link.removeFirst();
19 }
20 
21 //判斷隊列是否為空
22 public boolean isNull(){
23 return link.isEmpty();
24 }
25 }
26 
27 class Demo7 
28 {
29 public static void main(String[] args) 
30 {
31 MyQueue q=new MyQueue();
32 q.enQueue("1");
33 q.enQueue("2");
34 q.enQueue("3");
35 
36 while(!q.isNull()){
37 System.out.println(q.deQueue());
38 }
39 }
40 }

您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • ## DOM簡單學習:為了滿足案例要求 * 功能:控制html文檔的內容 * 獲取頁面標簽(元素)對象:Element * document.getElementById("id值"):通過元素的id獲取元素對象 * 操作Element對象: 1. 修改屬性值: 1. 明確獲取的對象是哪一個? 2.... ...
  • 單例模式介紹 單例模式,是為了確保在整個軟體體統中,某個類對象只有一個實例,並且該類通常會提供一個對外獲取該實例的public方法(靜態方法)。 比如日誌、資料庫連接池等對象,通常需要且只需要一個實例對象,這就會使用單例模式。 單例模式的八種模式 餓漢式(靜態常量) 餓漢式(靜態代碼塊) 懶漢式(線 ...
  • 設計模式介紹 設計模式是程式員在面對同類軟體工程設計問題所總結出來的有用的經驗,模式不是代碼,而是某類問題的通用解決方案, 設計模(Design pattern)代表了最佳的實踐。這些解決方案是眾多軟體開發人員經過相當長的一段時間的試驗和錯誤總結出來的。 設計模式的本質提高 軟體的維護性,通用性和擴 ...
  • [toc] 前言 適配器模式是最為普遍的設計模式之一,它不僅廣泛應用於代碼開發,在日常生活里也很常見。比如筆記本上的電源適配器,可以使用在110~ 220V之間變化的電源,而筆記本還能正常工作,這就是適配器模式最直接的例子,同時也是其思想的體現,簡單的說,適配器模式就是把一個類(介面)轉換成其他的類 ...
  • 前言: 是自己在學習python進階IO學習視頻的時候的理解和筆記,因為很多都是本菜鳥學習時候的自己的理解,有可能理解有誤。 Content: - 抽象的概念和麵向對象的概念?想要大概瞭解python的面向對象需要註意哪些知識點? - 由type、object、class來瞭解python對象的機制 ...
  • 快速寫一個 Spring AOP 實現類 1. 定義業務類,使用 @Service 註解加入 Spring 容器。 2. 定義切麵類,使用 @Component 註解加入 Spring 容器,標註 @Aspect 表示此類為切麵類,並給方法標註通知類型。 通知類型 前置通知 後置通知 返回通知 異常 ...
  • 一、轉義符 1.\'代表單引號;\\代表\; 二、native2ascii.exe JDK中自帶的native2ascii.exe命令,可以將文字轉換成unicode編碼形式 我們使用這個程式嘗試一下: 之所以介紹這個程式是為了說明我們輸入的字元在電腦內部會轉換成這一字元串,同時我們使用Syste ...
  • Apache Pulsar Pulsar是一個支持多租戶的、高性能的服務與服務之間消息通訊的解決方案,最初由雅虎開發,現在由Apache軟體基金會管理。 Pulsar的主要特性如下: Pulsar實例原生支持多集群,能無縫的基於地理位置進行跨集群備份 非常低的消息發佈和端到端的延遲 無縫擴展到超過百 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...