進(jìn)階JAVA語言第八天

Collection方法

學(xué)習(xí)目的

前面我們已經(jīng)學(xué)習(xí)了數(shù)組的基本知識,數(shù)組是用來存儲多個對象脊串。定義一個數(shù)組的基本方法是int[] score = {1,2,3}; int[] score = new int[10];但是他有個弊端:數(shù)組的?度不可變 內(nèi)容可變凉泄,不能存儲多種類型的對象躏尉。而實(shí)際開發(fā)中需要?個能夠隨時改變的數(shù)組,那么就引進(jìn)知識點(diǎn)集合(Collection)后众。使應(yīng)用更廣泛胀糜,更高效。

知識點(diǎn)

  1. Collection接?的使用
  2. Collection接?的方法
  3. 集合的遍歷
    3.1. 使?Iterator來遍歷
    3.2. for-each 增強(qiáng)for循環(huán) 快速循環(huán)
    3.3. for- i 普通for循環(huán)
  4. List接?
  5. List方法
  6. 將ArrayList轉(zhuǎn)化為普通數(shù)組
  7. Lambda表達(dá)式
  8. 排序方法及Lambda應(yīng)用
    8.1. 定義一個類實(shí)現(xiàn)接口
    8.2. 使用匿名類
    8.3. 使用Lambda表達(dá)式

解析

  1. Collection接?的使用
 Collection<String> t1 = new ArrayList();
 t1.add("Jack");
 t1.add("Merry");
 System.out.println(t1);
  1. Collection接?的方法
方法 用途 實(shí)例
remove 刪除?個對象 t1.remove("Jack");
size 獲取元素個數(shù) System.out.println(t1.size());
contains 判斷是否包含?個元素 if (t1.contains("Merry")){System.out.println("merry");}else{System.out.println("沒有merry");}
isEmpty 判斷是否為空 if(t1.isEmpty())System.out.println("是空的");}
equals 判斷兩個集合是否相同(?較集合??的內(nèi)容) Collection<String> t2 = new ArrayList<>();t2.add("Merry");t2.add("Jack"); t2.add("Rose");t2.add("Tom");if (t1.equals(t2)){System.out.println("兩個集合相同");} else{System.out.println("兩個集合不相同");}
clear 清空 t1.clear();

3.集合的遍歷
3.1. 使?Iterator來遍歷

// hasNext 判斷是否有元素
 // next 獲取下?個對象
 // remove 刪除當(dāng)前遍歷過后的對象
 System.out.println("----------------");
 Iterator iterator = t2.iterator();
 while (iterator.hasNext()){
 System.out.println(iterator.next());
 }
 System.out.println("----------------");

3.2. for-each 增強(qiáng)for循環(huán) 快速循環(huán)

for (String obj: t2){
 System.out.println(obj);
 }

3.3. for- i 普通for循環(huán)

for (int i = 0; i < t2.size(); i++){
 System.out.println(((ArrayList<String>) t2).get(i));
 }
  1. List接? extends Collection
  • 分為:ArrayList/LinkedArrayList
  • 用途:集合??只能存放對象蒂誉,基本數(shù)據(jù)類型:byte char int long float double boolean不能存放教藻,要使用其包裝類:Byte Char Integer Long Float Double Boolean。方法是?動將基本數(shù)據(jù)類型包裝為對應(yīng)的類右锨。
  • 使用方法:
  ArrayList<Integer> score = new ArrayList<>();
        score.add(2);
  1. List方法
    (以ArrayList為例括堤,LinkedArrayList方法相同,可能實(shí)現(xiàn)不同)
方法 用途 實(shí)例
add 添加插入 score.add(3);//在末尾添加score.add(0, 1);//在指定位置插?
get 訪問指定元素 score.get(1);
set 修改?個元素 score.set(0, 0);
remove 刪除 score.remove(0);//刪除指定位置的元素score.remove((Integer) 2); //刪除指定的對象
clear 清空 score.clear();
addAll 將?個集合??的內(nèi)容添加到當(dāng)前集合中 score.addAll(a2);
retainAll 取兩個集合的交集 System.out.println(score);ArrayList<Integer> a3 = new ArrayList<>();a3.add(1);a3.add(2);score.retainAll(a3);
indexOf/lastIndexOf 訪問某個對象在集合??的索引 ArrayList<Integer> a4 = new ArrayList<>();a4.add(1);a4.add(2);a4.add(2);a4.add(1);System.out.println(a4.indexOf(1));//第?次出現(xiàn)的位置System.out.println(a4.lastIndexOf(1));//最后?次出現(xiàn)的位置
  1. 將ArrayList轉(zhuǎn)化為普通數(shù)組
Integer[] objects = new Integer[a4.size()];
        a4.toArray(objects);
        for (Integer i : objects) {
            System.out.println(i);
        }
        System.out.println("----------");
        Object[] objects1 = a4.toArray();
        for (Object i : objects1) {
            System.out.println(i);
        }
        System.out.println("----------");
        Iterator iterator = a4.iterator();
        while (iterator.hasNext()) {
            System.out.println(iterator.next());
        }
  1. Lambda表達(dá)式
return (var1) -> {
 return !this.test(var1);
 };
 return 20;
  1. 排序方法及Lambda應(yīng)用
class ArrayClass{
    public void test(int[] target, Show s){
        for (int element: target){
            s.customShow(element);
        }
    }
}
//必須是接口 這個接口里面只有一個方法
interface Show{
    void customShow(int element);
}

class PXDClass implements Show{
    @Override
    public void customShow(int element) {
        System.out.println(element);
    }
}

排序使用方式:
8.1. 定義一個類實(shí)現(xiàn)接口

 ArrayClass ac = new ArrayClass();
     int[] num = {1,2,3,4,5,6};
       PXDClass pc = new PXDClass();
      ac.test(num, pc);

8.2. 使用匿名類

ArrayClass ac = new ArrayClass();
       int[] num = {1,2,3,4,5,6};
       ac.test(num, new Show() {
            @Override
           public void customShow(int element) {
                System.out.println(element);
            }
       });

8.3. 使用Lambda表達(dá)式

//如果參數(shù)是一個接口類對象绍移,且接口里面只有一個方法
        //可以省略方法名
        ArrayClass ac = new ArrayClass();
        int[] num = {1,2,3,4,5,6};
        ac.test(num, (int element) -> {
           System.out.println(element);
        });
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末悄窃,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子蹂窖,更是在濱河造成了極大的恐慌轧抗,老刑警劉巖,帶你破解...
    沈念sama閱讀 222,252評論 6 516
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件瞬测,死亡現(xiàn)場離奇詭異横媚,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)涣楷,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,886評論 3 399
  • 文/潘曉璐 我一進(jìn)店門分唾,熙熙樓的掌柜王于貴愁眉苦臉地迎上來抗碰,“玉大人狮斗,你說我怎么就攤上這事』∮” “怎么了碳褒?”我有些...
    開封第一講書人閱讀 168,814評論 0 361
  • 文/不壞的土叔 我叫張陵折砸,是天一觀的道長。 經(jīng)常有香客問我沙峻,道長睦授,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,869評論 1 299
  • 正文 為了忘掉前任摔寨,我火速辦了婚禮去枷,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘是复。我一直安慰自己删顶,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,888評論 6 398
  • 文/花漫 我一把揭開白布淑廊。 她就那樣靜靜地躺著逗余,像睡著了一般。 火紅的嫁衣襯著肌膚如雪季惩。 梳的紋絲不亂的頭發(fā)上录粱,一...
    開封第一講書人閱讀 52,475評論 1 312
  • 那天,我揣著相機(jī)與錄音画拾,去河邊找鬼啥繁。 笑死,一個胖子當(dāng)著我的面吹牛青抛,可吹牛的內(nèi)容都是我干的输虱。 我是一名探鬼主播,決...
    沈念sama閱讀 41,010評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼脂凶,長吁一口氣:“原來是場噩夢啊……” “哼宪睹!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起蚕钦,我...
    開封第一講書人閱讀 39,924評論 0 277
  • 序言:老撾萬榮一對情侶失蹤亭病,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體玛追,經(jīng)...
    沈念sama閱讀 46,469評論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡晃琳,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,552評論 3 342
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了整袁。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,680評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡佑吝,死狀恐怖坐昙,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情芋忿,我是刑警寧澤炸客,帶...
    沈念sama閱讀 36,362評論 5 351
  • 正文 年R本政府宣布疾棵,位于F島的核電站,受9級特大地震影響痹仙,放射性物質(zhì)發(fā)生泄漏是尔。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,037評論 3 335
  • 文/蒙蒙 一开仰、第九天 我趴在偏房一處隱蔽的房頂上張望拟枚。 院中可真熱鬧,春花似錦众弓、人聲如沸梨州。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,519評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽暴匠。三九已至,卻和暖如春傻粘,著一層夾襖步出監(jiān)牢的瞬間每窖,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,621評論 1 274
  • 我被黑心中介騙來泰國打工弦悉, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留窒典,地道東北人。 一個月前我還...
    沈念sama閱讀 49,099評論 3 378
  • 正文 我出身青樓稽莉,卻偏偏與公主長得像瀑志,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子污秆,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,691評論 2 361