久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

day13【Collection,、泛型】

 印度阿三17 2019-08-02

擴(kuò)展: equals()方法的源代碼

// 主方法
	Person p1 = new Person("張三", 23);
	Person p2 = new Person("李四", 24);

	boolean b = p1.equals(p2);

// =====================================================================
@Override
public boolean equals(Object o) { // Object o = new Person("李四", 24);
    // this: p1
    // o : p2
    // 比較地址值是否相同
    // 如果地址值相同, 直接返回true
    if (this == o) {
        return true;
    }
    
    // equals方法能夠調(diào)用成功說明p1一定不為null
    // 如果p2為null, 直接返回false
    if (o == null) {
        return false;
    }

    // getClass() : 獲取字節(jié)碼文件對(duì)象, 一個(gè)類的字節(jié)碼文件對(duì)象是唯一的
    // 如果p1和p2的字節(jié)碼文件對(duì)象不同(不是同一個(gè)類的對(duì)象), 直接返回false
    if (this.getClass() != o.getClass()) {
        return false;
    }
    
    // 多態(tài)的弊端: 父類引用不能直接使用子類特有的屬性和行為

    // 向下轉(zhuǎn)型
    Person person = (Person) o;

    return this.age == person.age &&
        Objects.equals(this.name, person.name);
}

一. Collection集合(重點(diǎn))

1. 單列集合的繼承體系

[外鏈圖片轉(zhuǎn)存失敗(img-jUZXnTSK-1564728938424)(assets/1564645350899.png)]

2. Collection中的常用功能

  • add

public boolean add(E e) : 把給定的對(duì)象添加到當(dāng)前集合中,。
  • remove

public boolean remove(E e) : 把給定的對(duì)象在當(dāng)前集合中刪除,。
  • clear

public void clear() :清空集合中所有的元素,。
  • isEmpty

public boolean isEmpty() : 判斷當(dāng)前集合是否為空(長度為0)。
  • contains

public boolean contains(E e) : 判斷當(dāng)前集合中是否包含給定的對(duì)象,。
  • size

public int size() : 獲取集合的長度(集合中元素的個(gè)數(shù))

二. 迭代器

  • 迭代器: 用來遍歷集合

1. 迭代器的使用

  • iterator

Iterator<E> iterator(): 獲取集合對(duì)應(yīng)的迭代器對(duì)象
  • 迭代器Iterator中的功能

    boolean hasNext(): 判斷是否有下一個(gè)元素
    E next() : 獲取下一個(gè)元素
    • next

    • hasNext

2. 遍歷集合

		Collection<String> c = new ArrayList<>();

        c.add("C羅");
        c.add("梅西");
        c.add("武磊");


        // 1. 獲取集合對(duì)應(yīng)的迭代器
        Iterator<String> it = c.iterator();
        // 2. 判斷是否有下一個(gè)元素
        while (it.hasNext()) {
            // 3. 獲取下一個(gè)元素
            System.out.println(it.next());
        }
  • 自定義對(duì)象

// 創(chuàng)建集合
        Collection<Person> c = new ArrayList<>();

        // 匿名對(duì)象
        c.add(new Person("張三", 23));
        c.add(new Person("李四", 24));
        c.add(new Person("王五", 25));
        c.add(new Person("趙六", 26));
        // c.add(new Person("周琦", 27));

        // 一個(gè)hashNext(), 就對(duì)應(yīng)一個(gè)next()
        // 遍歷
        // 1. 獲取集合對(duì)應(yīng)的迭代器對(duì)象
        Iterator<Person> it = c.iterator();
        // 2. 判斷是否有下一個(gè)元素
        while (it.hasNext()) {
            // 3. 獲取下一個(gè)元素
            Person p = it.next();
            System.out.println(p.getName()   "---"   p.getAge());
        }

3. 增強(qiáng)for(重點(diǎn))

  • 用來遍歷容器, 底層是迭代器

// 格式
for (容器中元素的數(shù)據(jù)類型  變量名  :  容器) {
    使用變量;
}
// 快捷鍵
容器.for -> enter

三. 泛型(了解)

泛型這一部分, 要求大家掌握的: 能夠使用泛型定義集合.

ArrayList<String> list = new ArrayList<>();

1. 了解泛型的好處

  • 將問題從運(yùn)行時(shí)期, 提前到編譯時(shí)期.

  • 省去了強(qiáng)轉(zhuǎn)的麻煩

2. 了解泛型類, 方法, 接口

  • 泛型類

    • 泛型類在創(chuàng)建對(duì)象時(shí), 確定泛型的具體數(shù)據(jù)類型

  • 泛型方法

    • 泛型方法在方法的調(diào)用時(shí), 確定泛型的具體數(shù)據(jù)類型

  • 泛型接口

    • 類實(shí)現(xiàn)泛型接口時(shí), 直接確定泛型的具體數(shù)據(jù)類型

    • 類實(shí)現(xiàn)泛型接口時(shí), 不確定具體類型, 等到創(chuàng)建該類對(duì)象的時(shí)候, 再確定泛型的具體數(shù)據(jù)類型

擴(kuò)展泛型方法的面試題

  • 需求: 創(chuàng)建用來打印集合的方法(可以打印所有數(shù)據(jù)類型的集合)

3. 了解泛型的邊界

泛型的通配符

  • ? : 代表所有類型

泛型的邊界

  • 固定泛型的上邊界

    <? extends E> : 傳入的泛型可以是E, 也可以是E的子類
  • 固定泛型的下邊界

    <? super E> : 傳入的泛型可以是E, 也可以是E的父類

四. 斗地主

public class Demo {
    public static void main(String[] args) {

        // 買牌
        // 創(chuàng)建容器, 用來當(dāng)做撲克盒(存放每一張牌)
        ArrayList<String> list = new ArrayList<>();

        // 創(chuàng)建花色數(shù)組
        String[] colors = {"?", "?", "?", "?"};
        // 創(chuàng)建點(diǎn)數(shù)數(shù)組
        String[] numbers = {"A", "2", "3", "4", "5", "6", "7", "8", "9", "10", "J", "Q", "K"};

        // 先遍歷花色數(shù)組
        for (String color : colors) {
            // 再遍歷點(diǎn)數(shù)
            for (String number : numbers) {
                // 拼接獲取一張牌
                String poker = color   number;
                // 將這張牌, 添加到集合中
                list.add(poker);
            }
        }
        // 添加大小王
        list.add("?");
        list.add("?");

        // 洗牌
        Collections.shuffle(list);

        // 發(fā)牌
        // 創(chuàng)建4個(gè)容器, 代表3個(gè)人和1個(gè)底牌
        ArrayList<String> me = new ArrayList<>();
        ArrayList<String> gaoOO = new ArrayList<>();
        ArrayList<String> zhuYin = new ArrayList<>();
        ArrayList<String> left = new ArrayList<>();

        // 遍歷集合, 使用普通for循環(huán)
        for (int i = 0; i < list.size(); i  ) {
            // i就是索引
            // 如果是最后3張牌, 發(fā)給底牌
            if (i >= list.size() - 3) {
                // 添加的是i索引對(duì)應(yīng)的元素
                left.add(list.get(i));
            }else if (i % 3 == 0) {
                me.add(list.get(i));
            }else if (i % 3 == 1) {
                gaoOO.add(list.get(i));
            }else {
                zhuYin.add(list.get(i));
            }
        }

        // 看牌
        System.out.println("底牌: "   left);
        System.out.println("我: "   me);
        System.out.println("圓圓: "   gaoOO);
        System.out.println("紫霞: "   zhuYin);
    }
}

創(chuàng)建集合, 集合中的元素是 [“C”, “Kotlin”, “Python”, “Java”, “Java”,“C ”, “C#”]

刪除"Java"

比較的時(shí)候使用equals()

遍歷的時(shí)候, 普通for循環(huán), 迭代器, 增強(qiáng)for循環(huán)

來源:https://www./content-4-374651.html

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn),。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式,、誘導(dǎo)購買等信息,謹(jǐn)防詐騙,。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多