JAVA筆記整理(九),JAVA中的集合

來源:互聯網
上載者:User

標籤:

         在工作中,我們經常需要將多個對象集中存放,可以使用數組,但是數組的長度一旦固定之後是不可變的,為了儲存數量確定的資料,我們可以使用JAVA中的集合。

         在我看來,JAVA中的集合可以看作是一個特殊的資料庫,可以針對這個資料庫進行資料的增刪查改,可以查看資料庫的大小,查看資料庫是否為空白等等。

         JAVA中的集合是由Collection和Map兩個介面派生出來的,正因為是兩個介面,所以只能通過其子類來將其執行個體化,為常用集合:

  

 

  

  Collection是List、Queue和Set介面的父介面,Map是HashMap的父介面。

           正因為是介面,所以實際使用是需要通過其子類將其執行個體化。

  Collection可以看作是傳統意義上的資料庫,提供一系列針對資料庫的增刪查改判斷操作

    List  
public class ListDemo01 {    public static void main(String[] args) {        List list = new ArrayList();        // 使用add()向List中添加元素,可見List是可重複的        list.add("A");        list.add("B");        list.add("A");        // 通過迴圈遍曆集合內容        for (int i = 0; i < list.size(); i++) { // 使用size()方法獲得list長度            System.out.println("第" + (i + 1) + "個元素是: " + list.get(i)); // 使用get(x)來獲得list中第x位置的元素        }        // 使用remove(x)來移除list中第x位的元素        list.remove(1);        // 通過迴圈遍曆集合內容        for (int i = 0; i < list.size(); i++) { // 使用size()方法獲得list長度            System.out.println("移除之後,第" + (i + 1) + "個元素是: " + list.get(i)); // 使用get(x)來獲得list中第x位置的元素        }        // 使用isEmpty()來查看集合是否為空白,如果返回true則為空白,false則不為空白        if (list.isEmpty()) {            System.out.println("這個集合是空的");        } else {            System.out.println("這個集合不是空的");        }        // 使用addAll將另一個集合添加到集合中        List list2 = new ArrayList();        list2.add(123);        list2.add("D");        list2.add(123);        list.addAll(list2);        for (int i = 0; i < list.size(); i++) { // 使用size()方法獲得list長度            System.out                    .println("移除之後,又添加後,第" + (i + 1) + "個元素是: " + list.get(i)); // 使用get(x)來獲得list中第x位置的元素        }        // 使用contains(x)方法來判斷集合中是否存在x元素        if (list.contains("Z")) {            System.out.println("集合中存在這個元素");        } else {            System.out.println("集合中不存在這個元素");        }        // 使用containsAll(x)方法來判斷集合中是否包含某個集合        List list3 = new ArrayList();        list3.add("A");        list3.add("B");        if (list.containsAll(list3)) {            System.out.println("list中包含list3");        } else {            System.out.println("list中不包含list3");        }        // 使用indexOf(x)來擷取x元素在集合中的位置,如果存在該元素,則返回該元素首次出現的位置,如果不存在,則返回-1        System.out.println("123在list2中出現的位置為: " + list2.indexOf(123));        System.out.println("123在list2中出現的位置為: " + list2.indexOf(456));                // 使用indexOf(x)來擷取最後一個x元素在集合中的位置,如果存在該元素,則返回該元素最後出現的位置,如果不存在,則返回-1        System.out.println("123在list2中最後一次出現的位置為: " + list2.lastIndexOf(123));        System.out.println("123在list2中最後一次出現的位置為: " + list2.lastIndexOf(456));                //使用set(x,y)來講list中第x個元素替換為y        list2.set(2, 456);        for (int i = 0; i < list2.size(); i++) {            System.out.println("替換之後,list的第" + (i+1) + "個元素為: " + list2.get(i));        }
    
     System.out.println(list2);
}}

   

         所有的Collection的實作類別都重寫了toString()方法,並且ArrayList是以“動態數組”的形式來儲存資料的,當使用System.out.println()來直接輸出List的話,會輸出[xx,yy,zz]的形式

 

set

         HashSet是Set的實作類別,它就好像一個箱子,我們可以往這個箱子裡放若干個對象,但是我們卻無法擷取到箱子裡面對象的順序,也不能放相同的對象

         HashSet和ArrayList提供的方法基本相同,只是HashSet中不允許添加重複的對象,如果使用add()添加重複對象,則會返回false,並且新添加的元素不會被添加。

         當向一個HashSet添加一個元素的時候,HashSet會調用該對的hashCode()方法來擷取到這個對象的hashCode值,然後集合中存在相同hashCode的對象,則添加不成功。

public class SetDemo02 {    public static void main(String[] args) {        Set set = new HashSet();        //通過add(x)方法來講x元素添加到set中        set.add("A");        set.add(1234);        set.add(1234);                //使用set的iterator()方法擷取到set的迭代期,再通過迭代期的next()方法擷取到set中的值        //通過輸出結果可以看到上面添加的1234其實只添加成功一個        Iterator iterator = set.iterator();        while (iterator.hasNext()) {            System.out.println(iterator.next());                    }                Set set2 = new HashSet();        set2.add("B");        set2.add("C");        set2.add("D");                //通過addAll()方法來將一個set集合添加到另一個中        set.addAll(set2);                iterator = set.iterator();        System.out.println("添加進一個集合之後,集合中的元素有");        while (iterator.hasNext()) {            System.out.println(iterator.next());        }                //通過contains()方法來判斷集合中是否包含某個元素        if (set.contains("A")) {            System.out.println("這個集合中包含A元素");        }else {            System.out.println("這個集合中不包含A元素");        }                //使用remove(x)來移除集合中的x元素,如果存在並移除,則返回true,否則返回false        if (set.remove("A")) {            System.out.println("集合中存在A元素,並且已經移除");        }else {            System.out.println("集合中不存在A元素");        }    }}

 

 

Map

         JAVA提供了一種以<鍵,值>形式儲存的集合---Map,你可以通過“鍵”尋找“值”。一個 Map 中不能包含相同的 key ,每個 key 只能映射一個 value 。

         Map是一個介面,他提供了HashMap, Hashtable, LinkedHashMap等子類,實際中常用HashMap。

         Map 介面提供三種collection 視圖,允許以鍵集、值集或鍵-值對應關係集的形式查看某個映射的內容。

public class MapDemo01 {    public static void main(String[] args) {        Map<String, String> map = new HashMap<String, String>();        //使用put(x,y)來添加索引值對        map.put("key1", "value1");        map.put("key2", "value2");        map.put("key3", "value3");        map.put("key4", "value4");        map.put("key5", "value5");        map.put("key6", "value6");        //通過get(x)來擷取key為x的值        String str = map.get("key1");        System.out.println(str);        //使用containsKey(x)來判斷是否存在key為x的索引值對        if (map.containsKey("key3")) {            System.out.println("key值為key3的集合存在");        } else {            System.out.println("key值為key3的集合不存在");        }        //使用containsValue(x)來判斷是否存在Value為x的索引值對        if (map.containsValue("key3")) {            System.out.println("value值為key3的集合存在");        } else {            System.out.println("value值為key3的集合不存在");        }        //使用keySet()來擷取map中所有鍵,返回一個Set集合        Set<String> set = map.keySet();        Iterator<String> iterator = set.iterator();        while (iterator.hasNext()) {            String s = iterator.next();            System.out.println("key:" + s + "----value:" + map.get(s));        }                //使用values()來擷取map中所有值,返回一個Collection        Collection<String> c = map.values();        Iterator iterator2 = c.iterator();        while (iterator2.hasNext()) {            System.out.println(iterator2.next());        }                //使用remove(x)來移除key為x的索引值對        map.remove("key3");        System.out.println("移除之後,map中剩餘的索引值對");        Collection<String> c2 = map.values();        Iterator iterator3 = c2.iterator();        while (iterator3.hasNext()) {            System.out.println(iterator3.next());        }            }}

 

  

 

  

JAVA筆記整理(九),JAVA中的集合

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.