成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

JAVA-集合類概述(筆記)

wangbinke / 1294人閱讀

摘要:通常使用矢代器來實現(xiàn)遍歷集合。將集合中指定索引位置的對象改成指定的對象。三元運算如果否則集合沒有繼承接口,它是提供到的映射,來決定遍歷對象的順序。

1.Collection接口是層次結(jié)構(gòu)中的跟接口。Collection接口通常不能直接使用,但該接口提供了添加元素,刪除元素,管理數(shù)據(jù)的方法。
Collection通常使用矢代器(Iterator)來實現(xiàn)遍歷集合。
代碼:

import java.util.*;

public class Muster { // 創(chuàng)建類Muster
    public static void main(String args[]) {
        Collection list = new ArrayList<>(); // 實例化集合類對象
        list.add("a"); // 向集合添加數(shù)據(jù)
        list.add("b");
        list.add("c");      
        int Size = list.size();//返回int類型,獲取該集合中元素的個數(shù)
        Iterator it = list.iterator(); // 創(chuàng)建迭代器     
        while (it.hasNext()) { // 判斷是否有下一個元素
            String str = (String) it.next(); // 獲取集合中元素
            System.out.println(str);
        }
        System.out.println(Size);
    }
}

結(jié)果:

2.List集合:
List集合中的元素應(yīng)許重復(fù),各元素的順序就是對象插入的順序。
LIst接口繼承了Collection接口,此外還定義了兩個非常重要的方法:

get(int index): 獲取指定索引位置的元素。
set(int index,Object obj) : 將集合中指定索引位置的對象改成指定的對象。

List接口的常用實現(xiàn)類有ArrayList 與 LinkedList。

a、ArrayList優(yōu)點:隨機訪問速度快,缺點:刪除或插入對象的速度慢。
b、LinkedList 正好相反。
代碼:

import java.util.*;

public class Gather { // 創(chuàng)建類Gather
    public static void main(String[] args) { // 主方法
        List list = new ArrayList<>(); // 創(chuàng)建集合對象
        list.add("a"); // 向集合添加元素
        list.add("b");
        list.add("c");
        int i = (int) (Math.random() * (list.size() - 1)); // 獲得0~1之間的隨機數(shù)
        System.out.println("隨機獲取數(shù)組中的元素:" + list.get(i));
        list.remove(2); // 將指定索引位置的元素從集合中移除
        System.out.println("將索引是"2"的元素從數(shù)組移除后,數(shù)組中的元素是:");
        for (int j = 0; j < list.size(); j++) { // 循環(huán)遍歷集合
            System.out.println(list.get(j));
        }
        System.out.println("最終集合中元素的個數(shù):"+list.size());
        //用矢代器遍歷集合
        Iteratorit = list.iterator();
        while(it.hasNext()){
            String str = (String)it.next();
            System.out.println(str);
        }
    }
}

結(jié)果:

3.Set集合
Set集合不按特定的順序排序,只是簡單把對象加入到集合中,但不能包含重復(fù)對象。
Set接口常用的實現(xiàn)類有HashSet類與Tree類。Set繼承了Comparable 接口。這個接口可參考JAVA API文檔

a、HashSet類有哈希表,遍歷的對象隨機
b、TreeSet類遍歷數(shù)組不僅可以按照自然順序排序,還可以按照指定順序排序。

代碼:

import java.util.*;
public class UpdateStu implements Comparable {
    String name;
    long id;
    public UpdateStu(String name, long id) {
        this.id = id;
        this.name = name;
    }
    public int compareTo(Object o) {
        UpdateStu upstu = (UpdateStu) o;
        int result = id > upstu.id ? 1 : (id == upstu.id ? 0 : -1);
        return result;
    }
    public long getId() {
        return id;
    }
    public void setId(long id) {
        this.id = id;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public static void main(String[] args) {
        UpdateStu stu1 = new UpdateStu("廈門", 00001);
        UpdateStu stu2 = new UpdateStu("北京", 00002);
        UpdateStu stu3 = new UpdateStu("上海", 00003);
        UpdateStu stu4 = new UpdateStu("廣州", 00004);
        TreeSet tree = new TreeSet<>();
        tree.add(stu1);
        tree.add(stu2);
        tree.add(stu3);
        tree.add(stu4);
        Iterator it = tree.iterator();
        System.out.println("Set集合中的所有元素:");
        while (it.hasNext()) {
            UpdateStu stu = (UpdateStu) it.next();
            System.out.println(stu.getId() + " " + stu.getName());
        }
        it = tree.headSet(stu2).iterator();
        System.out.println("截取前面部分的集合:");
        while (it.hasNext()) {
            UpdateStu stu = (UpdateStu) it.next();
            System.out.println(stu.getId() + " " + stu.getName());
        }
        it = tree.subSet(stu2, stu3).iterator();
        System.out.println("截取中間部分的集合");
        while (it.hasNext()) {
            UpdateStu stu = (UpdateStu) it.next();
            System.out.println(stu.getId() + " " + stu.getName());
        }
    }
}


結(jié)果:

補充:
細心的同學(xué)會發(fā)現(xiàn)上面的程序是繼承 Comparable 這個類的,且里面用到了compareTo方法,這好似接口中的方法,可以重寫該方法,返回的值就決定了Set集合遍歷數(shù)組的排序。這就是TreeSet可以自定義排序的秘密所在。

/*例如:pojo復(fù)寫了compareTo ()方法以后,對放入set集合的對象會根據(jù)compareTo ()方法的返回值進行排序,如果ast.height-this.height 為負值就是降序,以后每次比較正的放后面 負的放前面。*/

int result = id > upstu.id ? 1 : (id == upstu.id ? 0 : -1);

/*三元運算:  如果 id>upstu,return 1 ,否則 return (id == upstu.id ? 0 : -1)*/

4.Map集合:
Map沒有繼承Collection接口,它是提供key到value的映射,來決定遍歷對象的順序
注意每個key只能映射一個值。
代碼:
先創(chuàng)建Emp,獲得對象

public class Emp {
    private String e_id;
    private String e_name;
    public Emp( String e_id,String e_name) {
        this.e_id = e_id;
        this.e_name = e_name;
    }
    public String getE_id() {
        return e_id;
    }
    public void setE_id(String e_id) {
        this.e_id = e_id;
    }
    public String getE_name() {
        return e_name;
    }
    public void setE_name(String e_name) {
        this.e_name = e_name;
    }

}

在創(chuàng)建 MapText 遍歷對象

import java.util.*;

public class MapText { // 創(chuàng)建類MapText
    public static void main(String[] args) { // 主方法
        Map map = new HashMap<>(); // 由HashMap實現(xiàn)的Map對象
        Emp emp = new Emp("001", "廈門");
        Emp emp2 = new Emp("005", "上海"); // 創(chuàng)建Emp對象
        Emp emp3 = new Emp("004", "北京");
        map.put(emp.getE_id(), emp.getE_name());
        map.put(emp2.getE_id(), emp2.getE_name()); // 將對象添加到集合中
        map.put(emp3.getE_id(), emp3.getE_name());
        Set set = map.keySet(); // 獲取Map集合中的key對象集合
        Iterator it = set.iterator();
        System.out.println("HashMap類實現(xiàn)的Map集合,無序:");
        while (it.hasNext()) {
            String str = (String) it.next();
            String name = (String) map.get(str); // 遍歷Map集合
            System.out.println(str + " " + name);
        }

        TreeMap treemap = new TreeMap<>(); // 創(chuàng)建TreeMap集合對象
        treemap.putAll(map); // 向集合添加對象
        Iterator iter = treemap.keySet().iterator();
        System.out.println("TreeMap類實現(xiàn)的Map集合,鍵對象升序:");
        while (iter.hasNext()) { // 遍歷TreeMap集合對象
            String str = (String) iter.next(); // 獲取集合中的所有key對象
            String name = (String) treemap.get(str); // 獲取集合中的所有values值
            System.out.println(str + " " + name);
        }
    }
}

結(jié)果:

補充:
使用Map集合需要先獲取Map集合中的Key對象,再根據(jù)這個key映射對value進行遍歷,key獲取的順序決定value排列的順序。

Set set = map.keySet(); // 獲取Map集合中的key對象集合

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

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/64302.html

相關(guān)文章

  • JAVA集合概述

    摘要:近段時間在學(xué)習(xí)集合,原本也沒想著寫筆記或者博客的。在安卓開發(fā)的時候已經(jīng)有在用集合了,具體是用向上轉(zhuǎn)型到對象。我覺得集合比數(shù)組方便的地方主要有個所有操作都是基于對象進行,符合的核心思想。集合主要由兩個接口派生而來以及。 ????近段時間在學(xué)習(xí)java集合,原本也沒想著寫筆記或者博客的。但是慢慢看下去之后發(fā)現(xiàn)java集合的內(nèi)容繁多,但是各集合之間具有很大的共通性。所以就動了寫博客的念頭。?...

    darkbaby123 評論0 收藏0
  • Java學(xué)習(xí)路線總結(jié),搬磚工逆襲Java架構(gòu)師(全網(wǎng)最強)

    摘要:哪吒社區(qū)技能樹打卡打卡貼函數(shù)式接口簡介領(lǐng)域優(yōu)質(zhì)創(chuàng)作者哪吒公眾號作者架構(gòu)師奮斗者掃描主頁左側(cè)二維碼,加入群聊,一起學(xué)習(xí)一起進步歡迎點贊收藏留言前情提要無意間聽到領(lǐng)導(dǎo)們的談話,現(xiàn)在公司的現(xiàn)狀是碼農(nóng)太多,但能獨立帶隊的人太少,簡而言之,不缺干 ? 哪吒社區(qū)Java技能樹打卡?【打卡貼 day2...

    Scorpion 評論0 收藏0
  • Spring筆記01_下載_概述_監(jiān)聽器

    摘要:簡單來說,是一個輕量級的控制反轉(zhuǎn)和面向切面的容器框架。變成的支持提供面向切面編程,可以方便的實現(xiàn)對程序進行權(quán)限攔截,運行監(jiān)控等功能。用于反射創(chuàng)建對象,默認情況下調(diào)用無參構(gòu)造函數(shù)。指定對象的作用范圍。 1.Spring介紹 1.1 Spring概述 Spring是一個開源框架,Spring是于2003 年興起的一個輕量級的Java 開發(fā)框架,由Rod Johnson 在其著作Expert...

    reclay 評論0 收藏0
  • 面向?qū)ο蠼涌诙鄳B(tài)

    摘要:多態(tài)的前提是必須有子父類關(guān)系或者類實現(xiàn)接口關(guān)系,否則無法完成多態(tài)。具體格式如下父類引用指向子類對象就是多態(tài)的定義格式。多態(tài)的轉(zhuǎn)型分為向上轉(zhuǎn)型與向下轉(zhuǎn)型兩種向上轉(zhuǎn)型當有子類對象賦值給一個父類引用時,便是向上轉(zhuǎn)型,多態(tài)本身就是向上轉(zhuǎn)型的過程。 第3天 面向?qū)ο?今日內(nèi)容介紹? 接口? 多態(tài)? 筆記本案例今日學(xué)習(xí)目標? 寫出定義接口的格式? 寫出實現(xiàn)接口的格式?...

    wangdai 評論0 收藏0
  • Java集合框架概述集合的遍歷

    摘要:第三階段常見對象的學(xué)習(xí)集合框架概述和集合的遍歷一集合框架的概述集合的由來如果一個程序只包含固定數(shù)量的且其生命周期都是已知的對象,那么這是一個非常簡單的程序。進而它們的遍歷方式也應(yīng)該是不同的,最終就沒有定義迭代器類。 第三階段 JAVA常見對象的學(xué)習(xí) 集合框架概述和集合的遍歷 (一) 集合框架的概述 (1) 集合的由來 如果一個程序只包含固定數(shù)量的且其生命周期都是已知的對象,那么這是一...

    happyhuangjinjin 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<