集合:Collection接口城看,Set女气,List,Map接口析命,泛型

集合和數(shù)組的區(qū)別主卫?

  1. 數(shù)組:存儲(chǔ)相同類型的容器(基本數(shù)據(jù)類型,引用數(shù)據(jù)類型)鹃愤;定長(zhǎng)
  2. 集合:存儲(chǔ)對(duì)象(引用數(shù)據(jù)類型)簇搅,自動(dòng)擴(kuò)充

集合

  • 存儲(chǔ)數(shù)據(jù)的容器,所存儲(chǔ)的每個(gè)對(duì)象稱為一個(gè)元素
  • 集合的API都來(lái)自于JAVA.util包
  • 存儲(chǔ)不同數(shù)據(jù)類型的數(shù)據(jù)软吐,只能存儲(chǔ)引用數(shù)據(jù)類型
  • 不定長(zhǎng)
集合的API

Collection接口:所有集合(List和Set)的父類

  • Object[ ] toArray()將集合轉(zhuǎn)換成數(shù)組
  • int size()遍歷集合使用

Set接口:Collection子接口 無(wú)序無(wú)重復(fù)

  • 無(wú)序:元素放入的順序和真實(shí)存儲(chǔ)的順序不同
  • 不重復(fù):相同的對(duì)象只保留一個(gè)瘩将,自動(dòng)去重

Set接口的實(shí)現(xiàn)類

  1. HashSet:真實(shí)的存儲(chǔ)數(shù)據(jù)的順序:(按照元素的哈希碼值進(jìn)行數(shù)據(jù)的排放)
public static void main(String[] args) {
        HashSet<Object> set = new HashSet<>();
        set.add("apple");
        set.add("grape");
        set.add("pear");
        set.add("liwi");
        set.add(1);
        System.out.println(set.size());//5
        //用迭代器遍歷集合
        //前提:判空 集合是否為 null和 isEmpty(),如果為空 返回true,否則反之
        //1.構(gòu)建迭代器對(duì)象
        //2.調(diào)用hasNext()  判斷迭代器中是否有下一個(gè)元素
        //3.next()  獲取下一個(gè)元素
        //if ( set!=null && set.size()>0) {
        if ( set!=null && !set.isEmpty()) {
            Iterator<Object> iterator = set.iterator();
            while (iterator.hasNext()) {
                System.out.println(iterator.next());//apple 1 pear grape liwi
            }
        }
           //轉(zhuǎn)換成數(shù)組的形式
        System.out.println(Arrays.toString(set.toArray()));
        set.remove("apple");
        System.out.println(set.size());
        set.clear();
        System.out.println(set.size());
    }
  1. Treeset:真實(shí)的存儲(chǔ)數(shù)據(jù)的順序:(按照元素的(自然順序)升序排序)
public static void main(String[] args) {
        TreeSet<Object> set  = new TreeSet<>();
        set.add("apple");
        set.add("grape");
        set.add("pear");
        set.add("liwi");
        if ( set!=null && !set.isEmpty()) {
            Iterator<Object> iterator = set.iterator();
            while (iterator.hasNext()) {
                System.out.println(iterator.next());//apple   grape liwi pear
            }
        }
    }
public class Student implements Comparable<Student>{
    private int sno;
    private String sname;
    private int age;

    public Student() {
    }

    public Student(int sno, String sname, int age) {
        this.sno = sno;
        this.sname = sname;
        this.age = age;
    }

    public int getSno() {
        return sno;
    }

    public void setSno(int sno) {
        this.sno = sno;
    }

    public String getSname() {
        return sname;
    }

    public void setSname(String sname) {
        this.sname = sname;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    @Override
    public String toString() {
        return "Student{" +
                "sno=" + sno +
                ", sname='" + sname + '\'' +
                ", age=" + age +
                '}';
    }

    @Override
    public int compareTo(Student s) {
        if (this.age>s.age){
            return 1;
        }else {
            return -1;
        }
    }

List接口:Collection的子接口 有序可重復(fù),索引值從0開始

  • 有序:放元素的順序和元素真實(shí)存儲(chǔ)的順序一致
  • 可重復(fù):可存放重復(fù)的數(shù)據(jù)對(duì)象

List接口的實(shí)現(xiàn)類

  1. ArrayList:
    public static void main(String[] args) {
        List<String> list = new ArrayList<String>();//向上轉(zhuǎn)型:方便程序的擴(kuò)展
        list.add("apple");
        list.add("pear");
        list.add("lucky");
        list.add(1,"ly");
        System.out.println(list.size());
        //循環(huán)遍歷
        if (list!=null&&!list.isEmpty()){
            Iterator<String> iterator = list.iterator();
            while (iterator.hasNext()){
                System.out.println(iterator.next());
            }
        }
        //for循環(huán)遍歷
        if (list!=null&&!list.isEmpty()){
            for (int i = 0; i <list.size() ; i++) {
                System.out.println(list.get(i));
            }
        }
        //for each循環(huán)遍歷
        for (String s:list) {
            System.out.println(s);
        }
        list.remove("ly");//根據(jù)字符串
        list.remove(1);//根據(jù)索引值
        list.set(2,"asd");//將索引值為2的元素更改為“asd”
    }
  1. LinkedList:

ArrayList與LinkedList的區(qū)別

  1. ArrayList線性存儲(chǔ),隨機(jī)查詢
  2. LinkedList鏈表存儲(chǔ)姿现,元素的刪除和存儲(chǔ)的操作性能比較高

泛型:指定集合想要存放的數(shù)據(jù)類型

Map接口:以鍵值對(duì)的形式進(jìn)行數(shù)據(jù)存儲(chǔ)的集合容器 一一對(duì)應(yīng)(映射)

  • 每一個(gè)元素有兩部分構(gòu)成:鍵 值
  • 鍵是唯一的
  • 如果存儲(chǔ)相同的鍵的元素肠仪,則值會(huì)被覆蓋

Map接口的實(shí)現(xiàn)類

  1. HashMap:
public static void main(String[] args) {
        Map<Integer, String> map = new HashMap<>();
        map.put(1, "a");
        map.put(2, "b");
        map.put(3, "c");
        map.put(1, "e");
        map.remove(3);
        System.out.println(map.containsKey(3));//false
        System.out.println(map.containsValue("e"));//true
        System.out.println(map.get(1));//e
        //遍歷
        //1.判空
        //2.獲取所有的key的集合 map.keySet()
        //3.構(gòu)建迭代器對(duì)象
        //4.調(diào)用hasNext()  判斷迭代器中是否有下一個(gè)元素
        //5.next()  獲取下一個(gè)元素
        //6.根據(jù) 鍵 獲取 值 
        if (map != null && map.size() > 0) {
            Set<Integer> set = map.keySet();
            Iterator<Integer> iterator = set.iterator();
            while (iterator.hasNext()) {
                Integer key = iterator.next();
                String value = map.get(key);
                System.out.print(key + " " + value);
                System.out.println();
            }
        }
    }
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市备典,隨后出現(xiàn)的幾起案子异旧,更是在濱河造成了極大的恐慌,老刑警劉巖提佣,帶你破解...
    沈念sama閱讀 217,542評(píng)論 6 504
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件吮蛹,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡拌屏,警方通過查閱死者的電腦和手機(jī)潮针,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,822評(píng)論 3 394
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)倚喂,“玉大人每篷,你說我怎么就攤上這事《巳Γ” “怎么了焦读?”我有些...
    開封第一講書人閱讀 163,912評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)枫笛。 經(jīng)常有香客問我吨灭,道長(zhǎng),這世上最難降的妖魔是什么刑巧? 我笑而不...
    開封第一講書人閱讀 58,449評(píng)論 1 293
  • 正文 為了忘掉前任喧兄,我火速辦了婚禮,結(jié)果婚禮上啊楚,老公的妹妹穿的比我還像新娘吠冤。我一直安慰自己,他們只是感情好恭理,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,500評(píng)論 6 392
  • 文/花漫 我一把揭開白布拯辙。 她就那樣靜靜地躺著,像睡著了一般颜价。 火紅的嫁衣襯著肌膚如雪涯保。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,370評(píng)論 1 302
  • 那天周伦,我揣著相機(jī)與錄音夕春,去河邊找鬼。 笑死专挪,一個(gè)胖子當(dāng)著我的面吹牛及志,可吹牛的內(nèi)容都是我干的片排。 我是一名探鬼主播,決...
    沈念sama閱讀 40,193評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼速侈,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼率寡!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起倚搬,我...
    開封第一講書人閱讀 39,074評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤冶共,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后潭枣,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體比默,經(jīng)...
    沈念sama閱讀 45,505評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡幻捏,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,722評(píng)論 3 335
  • 正文 我和宋清朗相戀三年盆犁,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片篡九。...
    茶點(diǎn)故事閱讀 39,841評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡谐岁,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出榛臼,到底是詐尸還是另有隱情伊佃,我是刑警寧澤,帶...
    沈念sama閱讀 35,569評(píng)論 5 345
  • 正文 年R本政府宣布沛善,位于F島的核電站航揉,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏金刁。R本人自食惡果不足惜帅涂,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,168評(píng)論 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望尤蛮。 院中可真熱鬧媳友,春花似錦、人聲如沸产捞。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,783評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)坯临。三九已至焊唬,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間看靠,已是汗流浹背赶促。 一陣腳步聲響...
    開封第一講書人閱讀 32,918評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留衷笋,地道東北人芳杏。 一個(gè)月前我還...
    沈念sama閱讀 47,962評(píng)論 2 370
  • 正文 我出身青樓矩屁,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親爵赵。 傳聞我的和親對(duì)象是個(gè)殘疾皇子吝秕,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,781評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容