国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

java的集合和泛型的知識(shí)點(diǎn)歸納1

daryl / 1725人閱讀

摘要:接口也是集合中的一員,但它與接口有所不同,接口與接口主要用于存儲(chǔ)元素,而主要用于迭代訪問即遍歷中的元素,因此對(duì)象也被稱為迭代器。迭代器的實(shí)現(xiàn)原理我們?cè)谥鞍咐呀?jīng)完成了遍歷集合的整個(gè)過程。

【Collection、泛型】 主要內(nèi)容

Collection集合

迭代器

增強(qiáng)for

泛型

教學(xué)目標(biāo)

[ ] 能夠說出集合與數(shù)組的區(qū)別

[ ] 說出Collection集合的常用功能

[ ] 能夠使用迭代器對(duì)集合進(jìn)行取元素

[ ] 能夠說出集合的使用細(xì)節(jié)

[ ] 能夠使用集合存儲(chǔ)自定義類型

[ ] 能夠使用foreach循環(huán)遍歷集合

[ ] 能夠使用泛型定義集合對(duì)象

[ ] 能夠理解泛型上下限

[ ] 能夠闡述泛型通配符的作用

第一章 Collection集合 1.1 集合概述

在前面基礎(chǔ)班我們已經(jīng)學(xué)習(xí)過并使用過集合ArrayList ,那么集合到底是什么呢?

集合:集合是java中提供的一種容器,可以用來存儲(chǔ)多個(gè)數(shù)據(jù)。

集合和數(shù)組既然都是容器,它們有啥區(qū)別呢?

數(shù)組的長(zhǎng)度是固定的。集合的長(zhǎng)度是可變的。

數(shù)組中存儲(chǔ)的是同一類型的元素,可以存儲(chǔ)基本數(shù)據(jù)類型值。集合存儲(chǔ)的都是對(duì)象。而且對(duì)象的類型可以不一致。在開發(fā)中一般當(dāng)對(duì)象多的時(shí)候,使用集合進(jìn)行存儲(chǔ)。

1.2 集合框架

JAVASE提供了滿足各種需求的API,在使用這些API前,先了解其繼承與接口操作架構(gòu),才能了解何時(shí)采用哪個(gè)類,以及類之間如何彼此合作,從而達(dá)到靈活應(yīng)用。

集合按照其存儲(chǔ)結(jié)構(gòu)可以分為兩大類,分別是單列集合java.util.Collection和雙列集合java.util.Map,今天我們主要學(xué)習(xí)Collection集合,在day04時(shí)講解Map集合。

Collection:?jiǎn)瘟屑项惖母涌冢糜诖鎯?chǔ)一系列符合某種規(guī)則的元素,它有兩個(gè)重要的子接口,分別是java.util.Listjava.util.Set。其中,List的特點(diǎn)是元素有序、元素可重復(fù)。Set的特點(diǎn)是元素?zé)o序,而且不可重復(fù)。List接口的主要實(shí)現(xiàn)類有java.util.ArrayListjava.util.LinkedListSet接口的主要實(shí)現(xiàn)類有java.util.HashSetjava.util.TreeSet

從上面的描述可以看出JDK中提供了豐富的集合類庫,為了便于初學(xué)者進(jìn)行系統(tǒng)地學(xué)習(xí),接下來通過一張圖來描述整個(gè)集合類的繼承體系。

其中,橙色框里填寫的都是接口類型,而藍(lán)色框里填寫的都是具體的實(shí)現(xiàn)類。這幾天將針對(duì)圖中所列舉的集合類進(jìn)行逐一地講解。

集合本身是一個(gè)工具,它存放在java.util包中。在Collection接口定義著單列集合框架中最最共性的內(nèi)容。

1.3 Collection 常用功能

Collection是所有單列集合的父接口,因此在Collection中定義了單列集合(List和Set)通用的一些方法,這些方法可用于操作所有的單列集合。方法如下:

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

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

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

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

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

public int size(): 返回集合中元素的個(gè)數(shù)。

public Object[] toArray(): 把集合中的元素,存儲(chǔ)到數(shù)組中。

方法演示:

import java.util.ArrayList;
import java.util.Collection;

public class Demo1Collection {
    public static void main(String[] args) {
        // 創(chuàng)建集合對(duì)象 
        // 使用多態(tài)形式
        Collection coll = new ArrayList();
        // 使用方法
        // 添加功能  boolean  add(String s)
        coll.add("小李廣");
        coll.add("掃地僧");
        coll.add("石破天");
        System.out.println(coll);

        // boolean contains(E e) 判斷o是否在集合中存在
        System.out.println("判斷  掃地僧 是否在集合中"+coll.contains("掃地僧"));

        //boolean remove(E e) 刪除在集合中的o元素
        System.out.println("刪除石破天:"+coll.remove("石破天"));
        System.out.println("操作之后集合中元素:"+coll);
        
        // size() 集合中有幾個(gè)元素
        System.out.println("集合中有"+coll.size()+"個(gè)元素");

        // Object[] toArray()轉(zhuǎn)換成一個(gè)Object數(shù)組
        Object[] objects = coll.toArray();
        // 遍歷數(shù)組
        for (int i = 0; i < objects.length; i++) {
            System.out.println(objects[i]);
        }

        // void  clear() 清空集合
        coll.clear();
        System.out.println("集合中內(nèi)容為:"+coll);
        // boolean  isEmpty()  判斷是否為空
        System.out.println(coll.isEmpty());      
    }
}
tips: 有關(guān)Collection中的方法可不止上面這些,其他方法可以自行查看API學(xué)習(xí)。
第二章 Iterator迭代器 2.1 Iterator接口

在程序開發(fā)中,經(jīng)常需要遍歷集合中的所有元素。針對(duì)這種需求,JDK專門提供了一個(gè)接口java.util.IteratorIterator接口也是Java集合中的一員,但它與CollectionMap接口有所不同,Collection接口與Map接口主要用于存儲(chǔ)元素,而Iterator主要用于迭代訪問(即遍歷)Collection中的元素,因此Iterator對(duì)象也被稱為迭代器。

想要遍歷Collection集合,那么就要獲取該集合迭代器完成迭代操作,下面介紹一下獲取迭代器的方法:

public Iterator iterator(): 獲取集合對(duì)應(yīng)的迭代器,用來遍歷集合中的元素的。

下面介紹一下迭代的概念:

迭代:即Collection集合元素的通用獲取方式。在取元素之前先要判斷集合中有沒有元素,如果有,就把這個(gè)元素取出來,繼續(xù)在判斷,如果還有就再取出出來。一直把集合中的所有元素全部取出。這種取出方式專業(yè)術(shù)語稱為迭代。

Iterator接口的常用方法如下:

public E next():返回迭代的下一個(gè)元素。

public boolean hasNext():如果仍有元素可以迭代,則返回 true。

接下來我們通過案例學(xué)習(xí)如何使用Iterator迭代集合中元素:

public class IteratorDemo {
      public static void main(String[] args) {
        // 使用多態(tài)方式 創(chuàng)建對(duì)象
        Collection coll = new ArrayList();

        // 添加元素到集合
        coll.add("串串星人");
        coll.add("吐槽星人");
        coll.add("汪星人");
        //遍歷
        //使用迭代器 遍歷   每個(gè)集合對(duì)象都有自己的迭代器
        Iterator it = coll.iterator();
        //  泛型指的是 迭代出 元素的數(shù)據(jù)類型
        while(it.hasNext()){ //判斷是否有迭代元素
            String s = it.next();//獲取迭代出的元素
            System.out.println(s);
        }
      }
}
tips::在進(jìn)行集合元素取出時(shí),如果集合中已經(jīng)沒有元素了,還繼續(xù)使用迭代器的next方法,將會(huì)發(fā)生java.util.NoSuchElementException沒有集合元素的錯(cuò)誤。
2.2 迭代器的實(shí)現(xiàn)原理

我們?cè)谥鞍咐呀?jīng)完成了Iterator遍歷集合的整個(gè)過程。當(dāng)遍歷集合時(shí),首先通過調(diào)用t集合的iterator()方法獲得迭代器對(duì)象,然后使用hashNext()方法判斷集合中是否存在下一個(gè)元素,如果存在,則調(diào)用next()方法將元素取出,否則說明已到達(dá)了集合末尾,停止遍歷元素。

Iterator迭代器對(duì)象在遍歷集合時(shí),內(nèi)部采用指針的方式來跟蹤集合中的元素,為了讓初學(xué)者能更好地理解迭代器的工作原理,接下來通過一個(gè)圖例來演示Iterator對(duì)象迭代元素的過程:

在調(diào)用Iterator的next方法之前,迭代器的索引位于第一個(gè)元素之前,不指向任何元素,當(dāng)?shù)谝淮握{(diào)用迭代器的next方法后,迭代器的索引會(huì)向后移動(dòng)一位,指向第一個(gè)元素并將該元素返回,當(dāng)再次調(diào)用next方法時(shí),迭代器的索引會(huì)指向第二個(gè)元素并將該元素返回,依此類推,直到hasNext方法返回false,表示到達(dá)了集合的末尾,終止對(duì)元素的遍歷。

2.3 增強(qiáng)for

增強(qiáng)for循環(huán)(也稱for each循環(huán))是JDK1.5以后出來的一個(gè)高級(jí)for循環(huán),專門用來遍歷數(shù)組和集合的。它的內(nèi)部原理其實(shí)是個(gè)Iterator迭代器,所以在遍歷的過程中,不能對(duì)集合中的元素進(jìn)行增刪操作。

格式:

for(元素的數(shù)據(jù)類型  變量 : Collection集合or數(shù)組){ 
      //寫操作代碼
}

它用于遍歷Collection和數(shù)組。通常只進(jìn)行遍歷元素,不要在遍歷的過程中對(duì)集合元素進(jìn)行增刪操作。

練習(xí)1:遍歷數(shù)組
public class NBForDemo1 {
    public static void main(String[] args) {
        int[] arr = {3,5,6,87};
           //使用增強(qiáng)for遍歷數(shù)組
        for(int a : arr){//a代表數(shù)組中的每個(gè)元素
            System.out.println(a);
        }
    }
}
練習(xí)2:遍歷集合
public class NBFor {
    public static void main(String[] args) {        
        Collection coll = new ArrayList();
        coll.add("小河神");
        coll.add("老河神");
        coll.add("神婆");
        //使用增強(qiáng)for遍歷
        for(String s :coll){//接收變量s代表 代表被遍歷到的集合元素
            System.out.println(s);
        }
    }
}
tips: 新for循環(huán)必須有被遍歷的目標(biāo)。目標(biāo)只能是Collection或者是數(shù)組。新式for僅僅作為遍歷操作出現(xiàn)。
第三章 泛型 3.1 泛型概述

在前面學(xué)習(xí)集合時(shí),我們都知道集合中是可以存放任意對(duì)象的,只要把對(duì)象存儲(chǔ)集合后,那么這時(shí)他們都會(huì)被提升成Object類型。當(dāng)我們?cè)谌〕雒恳粋€(gè)對(duì)象,并且進(jìn)行相應(yīng)的操作,這時(shí)必須采用類型轉(zhuǎn)換。

大家觀察下面代碼:

public class GenericDemo {
    public static void main(String[] args) {
        Collection coll = new ArrayList();
        coll.add("abc");
        coll.add("itcast");
        coll.add(5);//由于集合沒有做任何限定,任何類型都可以給其中存放
        Iterator it = coll.iterator();
        while(it.hasNext()){
            //需要打印每個(gè)字符串的長(zhǎng)度,就要把迭代出來的對(duì)象轉(zhuǎn)成String類型
            String str = (String) it.next();
            System.out.println(str.length());
        }
    }
}

程序在運(yùn)行時(shí)發(fā)生了問題java.lang.ClassCastException。 為什么會(huì)發(fā)生類型轉(zhuǎn)換異常呢? 我們來分析下:由于集合中什么類型的元素都可以存儲(chǔ)。導(dǎo)致取出時(shí)強(qiáng)轉(zhuǎn)引發(fā)運(yùn)行時(shí) ClassCastException。 怎么來解決這個(gè)問題呢? Collection雖然可以存儲(chǔ)各種對(duì)象,但實(shí)際上通常Collection只存儲(chǔ)同一類型對(duì)象。例如都是存儲(chǔ)字符串對(duì)象。因此在JDK5之后,新增了泛型(Generic)語法,讓你在設(shè)計(jì)API時(shí)可以指定類或方法支持泛型,這樣我們使用API的時(shí)候也變得更為簡(jiǎn)潔,并得到了編譯時(shí)期的語法檢查。

泛型:可以在類或方法中預(yù)支地使用未知的類型。

tips:一般在創(chuàng)建對(duì)象時(shí),將未知的類型確定具體的類型。當(dāng)沒有指定泛型時(shí),默認(rèn)類型為Object類型。
3.2 使用泛型的好處

上一節(jié)只是講解了泛型的引入,那么泛型帶來了哪些好處呢?

將運(yùn)行時(shí)期的ClassCastException,轉(zhuǎn)移到了編譯時(shí)期變成了編譯失敗。

避免了類型強(qiáng)轉(zhuǎn)的麻煩。

通過我們?nèi)缦麓a體驗(yàn)一下:

public class GenericDemo2 {
    public static void main(String[] args) {
        Collection list = new ArrayList();
        list.add("abc");
        list.add("itcast");
        // list.add(5);//當(dāng)集合明確類型后,存放類型不一致就會(huì)編譯報(bào)錯(cuò)
        // 集合已經(jīng)明確具體存放的元素類型,那么在使用迭代器的時(shí)候,迭代器也同樣會(huì)知道具體遍歷元素類型
        Iterator it = list.iterator();
        while(it.hasNext()){
            String str = it.next();
            //當(dāng)使用Iterator控制元素類型后,就不需要強(qiáng)轉(zhuǎn)了。獲取到的元素直接就是String類型
            System.out.println(str.length());
        }
    }
}
tips:泛型是數(shù)據(jù)類型的一部分,我們將類名與泛型合并一起看做數(shù)據(jù)類型。
3.3 泛型的定義與使用

我們?cè)诩现袝?huì)大量使用到泛型,這里來完整地學(xué)習(xí)泛型知識(shí)。

泛型,用來靈活地將數(shù)據(jù)類型應(yīng)用到不同的類、方法、接口當(dāng)中。將數(shù)據(jù)類型作為參數(shù)進(jìn)行傳遞。

定義和使用含有泛型的類

泛型是什么,類變量的類型就是什么
定義格式:

修飾符 class 類名<代表泛型的變量> {  }

例如,API中的ArrayList集合:

class ArrayList{ 
    public boolean add(E e){ }

    public E get(int index){ }
       ....
}

使用泛型: 即什么時(shí)候確定泛型。

在創(chuàng)建對(duì)象的時(shí)候確定泛型

例如,ArrayList list = new ArrayList();

此時(shí),變量E的值就是String類型,那么我們的類型就可以理解為:

class ArrayList{ 
     public boolean add(String e){ }

     public String get(int index){  }
     ...
}

再例如,ArrayList list = new ArrayList();

此時(shí),變量E的值就是Integer類型,那么我們的類型就可以理解為:

class ArrayList { 
     public boolean add(Integer e) { }

     public Integer get(int index) {  }
     ...
}

舉例自定義泛型類

public class MyGenericClass {
    //沒有MVP類型,在這里代表 未知的一種數(shù)據(jù)類型 未來傳遞什么就是什么類型
    private MVP mvp;
     
    public void setMVP(MVP mvp) {
        this.mvp = mvp;
    }
     
    public MVP getMVP() {
        return mvp;
    }
}

使用:

public class GenericClassDemo {
      public static void main(String[] args) {         
         // 創(chuàng)建一個(gè)泛型為String的類
         MyGenericClass my = new MyGenericClass();        
         // 調(diào)用setMVP
         my.setMVP("大胡子登登");
         // 調(diào)用getMVP
         String mvp = my.getMVP();
         System.out.println(mvp);
         //創(chuàng)建一個(gè)泛型為Integer的類
         MyGenericClass my2 = new MyGenericClass(); 
         my2.setMVP(123);         
         Integer mvp2 = my2.getMVP();
    }
}
含有泛型的方法

泛型是什么,方法傳遞的參數(shù)的類型就是什么
定義格式:

修飾符 <代表泛型的變量> 返回值類型 方法名(參數(shù)){  }

例如,

public class MyGenericMethod {      
    public  void show(MVP mvp) {
        System.out.println(mvp.getClass());
    }
    
    public  MVP show2(MVP mvp) {    
        return mvp;
    }
}

使用格式:調(diào)用方法時(shí),確定泛型的類型

public class GenericMethodDemo {
    public static void main(String[] args) {
        // 創(chuàng)建對(duì)象
        MyGenericMethod mm = new MyGenericMethod();
        // 演示看方法提示
        mm.show("aaa");
        mm.show(123);
        mm.show(12.45);
    }
}

public class GenericMethodTest
{
// 泛型方法 printArray
public static < E > void printArray( E[] inputArray )
{

  // 輸出數(shù)組元素            
     for ( E element : inputArray ){        
        System.out.printf( "%s ", element );
     }
     System.out.println();
}

public static void main( String args[] )
{
    // 創(chuàng)建不同類型數(shù)組: Integer, Double 和 Character
    Integer[] intArray = { 1, 2, 3, 4, 5 };//必須是Integer 不能是int
    Double[] doubleArray = { 1.1, 2.2, 3.3, 4.4 };
    Character[] charArray = { "H", "E", "L", "L", "O" };

    System.out.println( "整型數(shù)組元素為:" );
    printArray( intArray  ); // 傳遞一個(gè)整型數(shù)組

    System.out.println( "
雙精度型數(shù)組元素為:" );
    printArray( doubleArray ); // 傳遞一個(gè)雙精度型數(shù)組

    System.out.println( "
字符型數(shù)組元素為:" );
    printArray( charArray ); // 傳遞一個(gè)字符型數(shù)組
} 

}

編譯以上代碼,運(yùn)行結(jié)果如下所示:

整型數(shù)組元素為:
1 2 3 4 5

雙精度型數(shù)組元素為:
1.1 2.2 3.3 4.4

字符型數(shù)組元素為:
H E L L O

含有泛型的接口

定義格式:

修飾符 interface接口名<代表泛型的變量> {  }

例如,

public interface MyGenericInterface{
    public abstract void add(E e);
    
    public abstract E getE();  
}

使用格式:

1、定義類時(shí)確定泛型的類型

例如

public class MyImp1 implements MyGenericInterface {
    @Override
    public void add(String e) {
        // 省略...
    }

    @Override
    public String getE() {
        return null;
    }
}

此時(shí),泛型E的值就是String類型。

2、始終不確定泛型的類型,直到創(chuàng)建對(duì)象時(shí),確定泛型的類型

例如

public class MyImp2 implements MyGenericInterface {
    @Override
    public void add(E e) {
            // 省略...
    }

    @Override
    public E getE() {
        return null;
    }
}

確定泛型:

/*
 * 使用
 */
public class GenericInterface {
    public static void main(String[] args) {
        MyImp2  my = new MyImp2();  
        my.add("aa");
    }
}
3.4 泛型通配符

當(dāng)使用泛型類或者接口時(shí),傳遞的數(shù)據(jù)中,泛型類型不確定,可以通過通配符表示。但是一旦使用泛型的通配符后,只能使用Object類中的共性方法,集合中元素自身方法無法使用。

通配符基本使用

泛型的通配符:不知道使用什么類型來接收的時(shí)候,此時(shí)可以使用?,?表示未知通配符。

此時(shí)只能接受數(shù)據(jù),不能往該集合中存儲(chǔ)數(shù)據(jù)。

舉個(gè)例子大家理解使用即可:

public static void main(String[] args) {
    Collection list1 = new ArrayList();
    getElement(list1);
    Collection list2 = new ArrayList();
    getElement(list2);
}
public static void getElement(Collection coll){}
//?代表可以接收任意類型
tips:泛型不存在繼承關(guān)系 Collection list = new ArrayList();這種是錯(cuò)誤的。
通配符高級(jí)使用----受限泛型

之前設(shè)置泛型的時(shí)候,實(shí)際上是可以任意設(shè)置的,只要是類就可以設(shè)置。但是在JAVA的泛型中可以指定一個(gè)泛型的上限下限

泛型的上限

格式類型名稱 對(duì)象名稱

意義只能接收該類型及其子類

泛型的下限

格式類型名稱 對(duì)象名稱

意義只能接收該類型及其父類型

比如:現(xiàn)已知Object類,String 類,Number類,Integer類,其中Number是Integer的父類

public static void main(String[] args) {
    Collection list1 = new ArrayList();
    Collection list2 = new ArrayList();
    Collection list3 = new ArrayList();
    Collection list4 = new ArrayList();
    
    getElement(list1);
    getElement(list2);//報(bào)錯(cuò)
    getElement(list3);
    getElement(list4);//報(bào)錯(cuò)
  
    getElement2(list1);//報(bào)錯(cuò)
    getElement2(list2);//報(bào)錯(cuò)
    getElement2(list3);
    getElement2(list4);
  
}
// 泛型的上限:此時(shí)的泛型?,必須是Number類型或者Number類型的子類
public static void getElement1(Collection coll){}
// 泛型的下限:此時(shí)的泛型?,必須是Number類型或者Number類型的父類
public static void getElement2(Collection coll){}
第四章 集合綜合案例
4.1 案例介紹

按照斗地主的規(guī)則,完成洗牌發(fā)牌的動(dòng)作。
具體規(guī)則:

使用54張牌打亂順序,三個(gè)玩家參與游戲,三人交替摸牌,每人17張牌,最后三張留作底牌。

4.2 案例分析

準(zhǔn)備牌:

牌可以設(shè)計(jì)為一個(gè)ArrayList,每個(gè)字符串為一張牌。
每張牌由花色數(shù)字兩部分組成,我們可以使用花色集合與數(shù)字集合嵌套迭代完成每張牌的組裝。
牌由Collections類的shuffle方法進(jìn)行隨機(jī)排序。

發(fā)牌

將每個(gè)人以及底牌設(shè)計(jì)為ArrayList,將最后3張牌直接存放于底牌,剩余牌通過對(duì)3取模依次發(fā)牌。

看牌

直接打印每個(gè)集合。

4.3 代碼實(shí)現(xiàn)
import java.util.ArrayList;
import java.util.Collections;

public class Poker {
    public static void main(String[] args) {
        /*
        * 1: 準(zhǔn)備牌操作
        */
        //1.1 創(chuàng)建牌盒 將來存儲(chǔ)牌面的 
        ArrayList pokerBox = new ArrayList();
        //1.2 創(chuàng)建花色集合
        ArrayList colors = new ArrayList();

        //1.3 創(chuàng)建數(shù)字集合
        ArrayList numbers = new ArrayList();

        //1.4 分別給花色 以及 數(shù)字集合添加元素
        colors.add("?");
        colors.add("?");
        colors.add("?");
        colors.add("?");

        for(int i = 2;i<=10;i++){
            numbers.add(i+"");
        }
        numbers.add("J");
        numbers.add("Q");
        numbers.add("K");
        numbers.add("A");
        //1.5 創(chuàng)造牌  拼接牌操作
        // 拿出每一個(gè)花色  然后跟每一個(gè)數(shù)字 進(jìn)行結(jié)合  存儲(chǔ)到牌盒中
        for (String color : colors) {
            //color每一個(gè)花色 
            //遍歷數(shù)字集合
            for(String number : numbers){
                //結(jié)合
                String card = color+number;
                //存儲(chǔ)到牌盒中
                pokerBox.add(card);
            }
        }
        //1.6大王小王
        pokerBox.add("小?");
        pokerBox.add("大?");      
        // System.out.println(pokerBox);
        //洗牌 是不是就是將  牌盒中 牌的索引打亂 
        // Collections類  工具類  都是 靜態(tài)方法
        // shuffer方法   
        /*
         * static void shuffle(List list) 
         *     使用默認(rèn)隨機(jī)源對(duì)指定列表進(jìn)行置換。 
         */
        //2:洗牌
        Collections.shuffle(pokerBox);
        //3 發(fā)牌
        //3.1 創(chuàng)建 三個(gè) 玩家集合  創(chuàng)建一個(gè)底牌集合
        ArrayList player1 = new ArrayList();
        ArrayList player2 = new ArrayList();
        ArrayList player3 = new ArrayList();
        ArrayList dipai = new ArrayList();      

        //遍歷 牌盒  必須知道索引   
        for(int i = 0;i=51){//存到底牌集合中
                dipai.add(card);
            } else {
                //玩家1   %3  ==0
                if(i%3==0){
                      player1.add(card);
                }else if(i%3==1){//玩家2
                      player2.add(card);
                }else{//玩家3
                      player3.add(card);
                }
            }
        }
        //看看
        System.out.println("令狐沖:"+player1);
        System.out.println("田伯光:"+player2);
        System.out.println("綠竹翁:"+player3);
        System.out.println("底牌:"+dipai);  
    }
}

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://m.specialneedsforspecialkids.com/yun/75049.html

相關(guān)文章

  • JAVA泛型筆記

    摘要:泛型類泛型類和普通類的區(qū)別就是類定義時(shí),在類名后加上泛型聲明。泛型類的內(nèi)部成員方法就可以使用聲明的參數(shù)類型。 泛型是JDK 1.5的一項(xiàng)新特性,它的本質(zhì)是參數(shù)化類型(Parameterized Type),即所操作的數(shù)據(jù)類型在定義時(shí)被指定為一個(gè)參數(shù)。當(dāng)我們使用的時(shí)候給這個(gè)參數(shù)指定不同的對(duì)象類型,就可以處理不同的對(duì)象。這種參數(shù)類型可以用在類、接口和方法的創(chuàng)建中,分別稱為泛型類、泛型接口和...

    n7then 評(píng)論0 收藏0
  • 泛型優(yōu)勢(shì)和使用方法

    摘要:為什么使用泛型泛型類和泛型方法同時(shí)具備可重用性類型安全和效率,這是非泛型類和非泛型方法無法具備的。泛型通常用與集合以及作用于集合的方法一起使用。泛型方法泛型方法,是在調(diào)用方法的時(shí)候指明泛型的具體類型。 為什么使用泛型 泛型類和泛型方法同時(shí)具備可重用性、類型安全和效率,這是非泛型類和非泛型方法無法具備的。 泛型通常用與集合以及作用于集合的方法一起使用。可重用性:比如要返回兩個(gè)信息,一種是...

    _DangJin 評(píng)論0 收藏0
  • Java泛型泛型類、泛型接口泛型方法

    摘要:泛型類容器類應(yīng)該算得上最具重用性的類庫之一。也就是說,如果使用泛型方法可以取代將整個(gè)類泛化,那么應(yīng)該有限采用泛型方法。以上,泛型的第一部分的結(jié)束。 根據(jù)《Java編程思想 (第4版)》中的描述,泛型出現(xiàn)的動(dòng)機(jī)在于: 有許多原因促成了泛型的出現(xiàn),而最引人注意的一個(gè)原因,就是為了創(chuàng)建容器類。 泛型類 容器類應(yīng)該算得上最具重用性的類庫之一。先來看一個(gè)沒有泛型的情況下的容器類如何定義: pub...

    khs1994 評(píng)論0 收藏0
  • Java泛型

    摘要:定義什么是泛型,看表面的意思,泛型就是指廣泛的普通的類型。繼承關(guān)系泛型類在繼承時(shí),可以明確父類泛型類的參數(shù)類型,也可以不明確。參考資料泛型就是這么簡(jiǎn)單 1、定義 什么是泛型,看表面的意思,泛型就是指廣泛的、普通的類型。在java中是指把類型明確的工作推遲到創(chuàng)建對(duì)象或調(diào)用方法的時(shí)候才去明確的特殊的類型。 可一看一個(gè)簡(jiǎn)單的例子: List strings = new ArrayList()...

    snowLu 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<