集合框架

来源:http://www.cnblogs.com/a5513633/archive/2017/04/16/6719357.html
-Advertisement-
Play Games

集合框架包含的內容: 集合框架的介面: List介面實現類 ArrayList LinkedList 迭代器Iterator 如何遍歷List集合? 1、通過for迴圈和get()方法配合實現遍歷 2、通過迭代器Iterator實現遍歷 所有集合介面和類都沒有提供相應遍歷的方法,而是由Iterato ...


集合框架包含的內容:

集合框架的介面:

List介面實現類

ArrayList

 1 package com.jredu.ch01;
 3 import java.util.ArrayList;
 5 import java.util.List;
 7 public class ArrayListTest {
 9     public static void main(String[] args) {
10         // TODO Auto-generated method stub
11         // 創建一個list集合對象
12         // list是有序但不唯一的一組集合數據
13         List list = new ArrayList<>();
14         // 開始的集合長度為0
15         // list.size() 返回給定集合的長度
16         System.out.println("添加數據前的集合長度" + list.size());
17         // list.add("aaaa");
18         // list.add("dddd");
19         // list.add("cccc");
20         // list.add("aaaa");
21         list.add(1);
22         list.add("two");
23         list.add('c'); // 字元型
24         list.add(true);
25         // list.add(index, element);
26         // 在指定索引處添加了一個元素,但索引位置必須介於0——集合的元素個數之間
27         list.add(1, "啦啦啦");
28         System.out.println(list);
29         System.out.println("添加數據後的集合長度" + list.size());
30         // get方法通過傳入指定元素的索引獲取該元素,取出來的類型Object類型
31         // 使用前需要進行類型強制轉換
32         // 索引範圍內是0——集合長度減一 範圍
33         System.out.println(list.get(3));// 因為add添加,要+1得到c
34     }
35 }
 1 package com.jredu.ch01;
 3 import java.util.ArrayList;
 5 public class ArrayListTest2 {
 7     public static void main(String[] args) {
 8         // TODO Auto-generated method stub
 9         ArrayList list = new ArrayList<>();
10         list.add(1);
11         list.add(2);
12         list.add(3);
13         list.add(2);
14         // contains判斷列表中是否存在該元素
15         if (list.contains(3)) {
16             System.out.println("找到了");
17         } else {
18             System.out.println("未找到");
19         }
20         // remove在列表中刪除指定元素,刪除成功返回true,失敗返回false
21         // 如果有多個元素值相同,只刪掉第一個
22         if (list.remove(Integer.valueOf(2))) { // 包裝類
23             System.out.println("刪除成功");
24         } else {
25             System.out.println("刪除失敗");
26         }
27         System.out.println(list);
28         // 刪除的是對應下標的那個元素的值
29         // list.remove(1);
30         System.out.println(list.remove(2));
32     }
34 }
 1 package com.jredu.ch03;
 3 import java.util.ArrayList;
 4 import java.util.Arrays;
 6 /**
 7  * list擴展:常見的幾個擴展方法11  */
12 public class ListDemo {
13     public static void main(String[] args) {
14         ArrayList list = new ArrayList<>();
15         ArrayList list2 = new ArrayList<>();
16         ArrayList list3 = new ArrayList<>();
17         list.add(1);
18         list.add(2);
19         list.add(3);
20         list2.add(1);
21         list2.add(2);
22         list2.add(3);
23         // 向集合中添加一個集合
24         list3.addAll(list);
25         list3.addAll(list2);
26         // System.out.println(list);
27         // System.out.println(list2);
28         // System.out.println(list3);
30         ArrayList list4 = new ArrayList<>();// ArrayList list4 =null;
31         list4.add(1);
32         // 判斷集合中是否有元素
33         if (list4 != null && !list4.isEmpty()) {
34             System.out.println("集合中有數據");
35         } else {
36             System.out.println("集合為空");
37         }
39         ArrayList list5 = new ArrayList<>();
40         // Object [] o={1,2,3};
41         list5.add(1);
42         list5.add(2);
43         list5.add(3);
44         // 數組和集合相互轉換
45         // 集合轉數組
46         Object[] o = list5.toArray();
47         System.out.println(Arrays.toString(o));
48         // 數組轉集合
49         ArrayList list6 = new ArrayList<>();
50         list6.addAll(Arrays.asList(o));
51         System.out.println(list6);
53         // for(int i=0;i<list.size();i++){
54         // list2.add(list.get(i));
55         // }
56         // System.out.println(list2);
57     }
58 }

LinkedList

 1 package com.jredu.ch01;
 3 import java.util.ArrayList;
 4 import java.util.List;
 5 import java.util.Random;
 6 import java.util.Scanner;
 8 public class Random1 {
10     //存儲所有的姓名
11     List list=new ArrayList<>();
12     //接收控制台信息
13     Scanner in=new Scanner(System.in);
14     //隨機數
15     Random r=new Random();
17     public void addNames() {
18         //迴圈添加姓名
19         while(true) {
20             //提示信息
21             System.out.print("請輸入姓名");
22             //接收姓名
23             list.add(in.next());
24             //提示信息
25             System.out.print("是否繼續添加?(y/n)");
26             String code=in.next();
27             if(!code.equals("y")) {
28                 break;
29             }
30         }
31         System.out.println(list);
32     }   
34     public void getRandomName() {
35         while(true){
36             //得到隨機數
37             int i=r.nextInt(list.size());
38             //得到對應的名字
39             System.out.println(list.get(i));
40             System.out.print("是否繼續點名?(y/n)");
41             String code=in.next();
42             //判斷如果不是y,就退出
43             if(!code.equals("y")) {
44                 return;
45             }
46         }
47     }
49     public static void main(String[] args) {
50         Random1 test=new Random1();
51         //添加姓名
52         test.addNames();
53         //獲得隨機的姓名
54         test.getRandomName();
55     } 
58 }
 1 package com.jredu.ch02;
 3 import java.util.ArrayList;
 4 import java.util.List;
 5 import java.util.Scanner;
 7 public class StudentManager {
 9     ArrayList list = new ArrayList<>();
10     Scanner sc = new Scanner(System.in);
12     public void addStu() {
13         System.out.println("**********錄入學生信息,當錄入學生的編號為0時結束錄入************");
14         while (true) {
15             System.out.print("請輸入學員學號:");
16             int num = sc.nextInt();
17             Student stu = null; 
18             if (num == 0) {
19                 System.out.println("結束錄入!");
20                 show();
21                 break;
22             } else {
23                 System.out.print("請輸入學員姓名:");
24                 String name = sc.next();
25                 System.out.print("請輸入學員年齡:");
26                 int age = sc.nextInt();
27                 stu = new Student(num, name, age);
28                 list.add(stu);
29             }
30         }
32     }
34     public void show() {
35         System.out.println("學員的信息如下:");
36         System.out.println("學號\t姓名\t年齡");
37         // Student s = null;
38         // for (int i = 0; i < list.size(); i++) {
39         // s = (Student) list.get(i);
40         // System.out.println(s.getId() + "\t" + s.getName() + "\t" +
41         // s.getAge());
42         // }
43         for (Object o : list) {
44             Student stu = (Student) o;
45             System.out.println(stu.getId() + "\t" + stu.getName() + "\t" + stu.getAge());
46         }
48     }
50     public void update() {
51         System.out.print("請輸入需要修改的學員學號:");
52         int num = sc.nextInt();
53         for (int i = 0; i < list.size(); i++) {
54             Student stu = (Student) list.get(i);
55             if (stu.getId() == num) {
56                 System.out.print("請輸入需要修改的學員姓名:");
57                 stu.setName(sc.next());
58                 System.out.print("請輸入需要修改的學員年齡:");
59                 stu.setAge(sc.nextInt());
60                 System.out.println("修改成功");
61                 // 展示數據
62                 show();
63                 return;// 跳出方法
64             }
65         }
66         System.out.println("沒有該學員");
67     }
69     public void remove() {
70         System.out.print("請輸入要刪除的編號");
71         int no = sc.nextInt();
72         for (int i = 0; i < list.size(); i++) {
73             if (no == ((Student) list.get(i)).getId()) {
74                 list.remove(i);
75                 System.out.println("刪除成功");
76                 show();
77                 return;
78             }
79         }
80         System.out.println("對不起,沒有此學員");
81     }
83     public static void main(String[] args) {
84         StudentManager sm = new StudentManager();
85         sm.addStu();
86         sm.update();
87         sm.remove();
88     }
90 }

迭代器Iterator

如何遍歷List集合?

1、通過for迴圈和get()方法配合實現遍歷

2、通過迭代器Iterator實現遍歷

所有集合介面和類都沒有提供相應遍歷的方法,而是由Iterator實現集合遍歷

Collection介面的iterate()方法返回一個Iterator,然後通過Iterator介面的兩個方法可實現遍歷

boolean hasNext():判斷是否存在另一個可訪問的元素

Object next()返回要訪問的下一個元素

 1 package com.jredu.ch03;
 3 import java.util.Iterator;
 4 import java.util.LinkedList;
 6 public class IteratorTest {
 7     public static void main(String[] args) {
 8         LinkedList list=new LinkedList<>();
 9         list.add(1);
10         list.add(2);
11         list.add(3);
12         //獲取集合中的每一個元素
13         //使用迭代
14         Iterator iter=list.iterator();
15         //判斷是否存在下一個元素
16         while(iter.hasNext()){
17             //獲取下一個元素
18             System.out.print(iter.next()+" ");        
19         }
20         System.out.println("\n***********");    
21         //for迴圈
22         for(int i=0;i<list.size();i++){
23             System.out.print(list.get(i)+" ");
24         }
25         System.out.println("\n***********");
26         //foreach迴圈
27         for(Object o:list){
28             System.out.print(o+" ");
29         }
30 //        for(int i=0;i<5;i++){
31 //            list.add(new Student(i,"name"+i,i));
32 //        }
33 //        Iterator iter=list.iterator();
34 //        while(iter.hasNext()){
35 //            Student stu=(Student)iter.next();
36 //            System.out.println(stu.getId());
37 //            System.out.println(stu.getName());
38 //            System.out.println(stu.getAge());            
39 //        }    
40     }
41 }

HashSet

 1 package com.jredu.ch03;
 2 import java.util.HashSet;
 3 import java.util.Iterator;
 4 public class SetTest {
 5     public static void main(String[] args) {
 6         HashSet hs=new HashSet<>();
 7         //唯一
 8 //        hs.add(1);
 9 //        hs.add(2);
10 //        hs.add(1);
11 //        hs.add(true);
12 //        hs.add(true);
13 //        Dog dog=new Dog("陳", "單身貓");
14 //        Dog dog2=new Dog("周", "單身貓");
15 //        hs.add(dog2);
16 //        hs.add(dog);
17 //        System.out.println(hs.size());
18         //無序
19         hs.add(8);
20         hs.add(5);
21         hs.add(3);
22         hs.add(1);
23         Iterator iter=hs.iterator();
24         while(iter.hasNext()){
25             int i=(int)iter.next();
26             System.out.println(i);
27         } 
29     }
30 }

HashMap

 1 package com.jredu.ch04;
 3 import java.util.Collection;
 4 import java.util.HashMap;
 5 import java.util.Iterator;
 6 import java.util.Set;
 7 import java.util.Map.Entry;
 9 public class Ch01 {
11     public static void main(String[] args) {
12         HashMap map = new HashMap<>();
13         map.put(1, "哈哈");
14         map.put(2, "吼吼");
15         map.put(3, "嗚嗚");
16         // keySet獲得鍵集合
17         Set set = map.keySet();
18         Iterator iter = set.iterator();
19         while (iter.hasNext()) {
20             int i = (int) iter.next();
21             System.out.println(i);
22         }
23         // values獲得值集合
24         Collection col = map.values();
25         Iterator iter1 = col.iterator();
26         while (iter1.hasNext()) {
27             String str = (String) iter1.next();
28             System.out.println(str);
29         }
30         // entrySet獲得鍵和值的集合
31         Set entrySet = map.entrySet();
32         Iterator iter2 = entrySet.iterator();
33         while (iter2.hasNext()) {
34             Entry entry = (Entry) iter2.next();
36             System.out.println(entry.getKey());
37             System.out.println(entry.getValue());
38         }
39     }
41 }

 

package com.jredu.ch04;
public class Goods {  
    private String name;
    private double price;
    private int count;  
    public Goods(String name, double price, int count) {
        super();
        this.name = name;
        this.price = price;
        this.count = count;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public double getPrice() {
        return price;
    }
    public void setPrice(double price) {
        this.price = price;
    }
    public int getCount() {
        return count;
    }
    public void setCount(int count) {
        this.count = count;
    }
    @Override
    public String toString() {
        return "Goods [name=" + name + ", price=" + price + ", count=" + count + "]";
    }
}

package com.jredu.ch04;
import java.util.Comparator;
/**
 * 數量比較*/
public class CountComparator implements Comparator{
    @Override
    public int compare(Object o1, Object o2) {
        // TODO Auto-generated method stub
        Goods g1=(Goods) o1;
        Goods g2=(Goods) o2;
        //按照數量規則進行比較判斷
        if(g1.getCount()>=g2.getCount()) {
            //滿足規則返回1
            return 1;
        }
        return -1;
    }
}

package com.jredu.ch04;
import java.util.ArrayList;
import java.util.Collections;
public class GoodsManager {
    ArrayList list=new ArrayList<>();
    public static final int PRICE=1;
    public static final int COUNT=2;
    public GoodsManager() {
        list.add(new Goods("手機", 999, 2));
        list.add(new Goods("電視", 4000, 5));
        list.add(new Goods("筆記本電腦", 6000, 10));
        list.add(new Goods("滑鼠", 50, 30));
        list.add(new Goods("鍵盤", 40, 7));
    }    
    public void sort(int type) {
        //價格排序/數量排序
        switch (type) {
        case PRICE:
            Collections.sort(list,new PriceComparator());
//            Collections.reverse(list);
            show();
            break;
        case COUNT:
//            Collections.sort(list,new CountComparator());
//            Collections.reverse(list);
            show();
            break;
        }
    }    
    public void show() {
        System.out.println(list);
    }
    public static void main(String[] args) {
        GoodsManager gm=new GoodsManager();
        gm.sort(GoodsManager.PRICE);
//        gm.sort(GoodsManager.COUNT);
    }
}

 


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

-Advertisement-
Play Games
更多相關文章
  • 併發容器 通過併發容器來替代同步容器,提供性能,可以極大地提高伸縮性並降低風險。 Java 5.0增加了兩種新的容器類型:Queue和BlockingQueue。Queue的實現有:ConcurrentLinkedQueue,這是一個傳統的先進先出的隊列,PriorityQueue(非併發的)優先隊 ...
  • 韓信點兵。 韓信有一隊兵,他想知道有多少人,便讓士兵排隊報數。 按從1至 5報數,最末一個士兵報的數為1; 按從1至6報數,最末一個士兵報的數為5; 按從 1至 7報數,最末一個士兵報的數為 4; 按從 1至 11報數,最末一個士兵報的數為 10。 你知道韓信至少有多少兵嗎? 2、【演算法思想】 設兵 ...
  • 1557 熱浪 1557 熱浪 時間限制: 1 s 空間限制: 256000 KB 題目等級 : 鑽石 Diamond 時間限制: 1 s 空間限制: 256000 KB 題目等級 : 鑽石 Diamond 時間限制: 1 s 時間限制: 1 s 空間限制: 256000 KB 空間限制: 2560 ...
  • 一、簡單線程同步問題 ...
  • 以前介紹過ubuntu下更換更新源辦法,詳情見http://www.cnblogs.com/Alier/p/6358447.html 下麵講一下windows下麵pip的配置更改,包括下載軟體是超時錯誤和更新源更換! 我的電腦系統為win10的,pip配置文件在%APPDATA%/pip/pip.i ...
  • TDB Assembler Assemblers (裝配器) 是Jena中用於描述將要構建的對象(通常是模型和數據集 models & datasets)的一種通用機制。例如, Fuseki 嚴重依賴使用 Assemblers 來描述模型和數據集. SPARQL 查詢是在RDF數據集上操作的。RDF ...
  • 由於不能使用自帶的printf函數,也是哭阿,好了,直接講解題思路:題目說了可以活用setfill和setw控制符,那應該可以解決題目: 直接貼代碼: 沒有百度到解決方法,我也算是原創了。 ...
  • 第8章實踐項目之瘋狂填詞 創建一個一個瘋狂填詞(Mad Libs),程式,它將讀入文本文件,並讓用戶在該文本文件中出現 ADJECTIVE,NOUN,VERB等單詞的地方,加上他們自己的文本。 首先準備一個a.txt的文本文件 程式代碼如下: 輸出結果為: cat下b.txt OK 大功告成。 ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...