java集合學習之Collection(1)

來源:互聯網
上載者:User

標籤:java   集合   collection   

java集合類主要由兩個介面派生出來:Collection和Map,者兩個類是java集合架構的根本介面,其餘的集合都是這兩個集合的子類,這篇部落客要講Collection介面及其體系中包含的set,list,queue 等集合。下面依次就這些內容進行講解。

一.Collection
1.Collection是set,list,queue介面的父介面,Collection中定義的方法對set,list,queue也是適用的。下面的代碼示範了Collection的基本操作,從下面的代碼中可以看到,集合的操作有針對當個元素和一個集合的,這兩種操作的函數名很是類似,只是對於操作對象是集合的,函數名一般加一個All。

package lkl;import java.util.ArrayList;import java.util.Collection;import java.util.HashSet;public class CollectionTest {       public static void main(String[] args){           Collection c = new ArrayList();           Collection d= new HashSet();           ///add()方法可以向集合中添加一個元素           ///addAll()方法可以添加一個集合           c.add("lkl");           d.add("test");           d.add("java");           c.addAll(d);           ///isEmpty()方法用來測試集合是否為空白           System.out.println("集合是否為空白?"+c.isEmpty());           ///remove()可以將一個元素從集合中移除          /// removeAll可以將某個集合的全部元素從當前集合移除           c.remove("lkl");           c.remove(d);           System.out.println("集合是否為空白?"+c.isEmpty());           c.add("lkl");           c.add(d);           ///contains()方法可以用來判斷集合是否包含某個元素           ///containsAll可以用來判斷集合是否包含另一個集合中所有的元素           System.out.println("集合c是否包含“lkl”?"+c.contains("lkl"));           System.out.println("集合c是否d中的所有元素?"+c.containsAll(d));           ///retainAll()方法求當前集合和傳入集合的交集           c.retainAll(d);           System.out.println(c);           c.add("lkl");           ///size()方法返回集合中元素的個數          System.out.println("集合c中的元素個數為:"+c.size());        /*  ///toArray將集合轉換成一個數組,集合元素成為數組元素          String[] str =(String[])c.toArray();*/          ///clear()將集合清空          c.clear();          System.out.println("集合是否為空白?"+c.isEmpty());       }}

2.Collection集合的遍曆
我們一般使用Iterator來遍曆集合。Iterator也是java集合架構的成員,其主要用於遍曆Collection集合;它提供了以下三個方法:
bool hasNext():如果集合的元素還沒被遍曆玩,則返回true
Object next(): 返回集合中的下一個元素
void remove(): 刪除集合裡上次next()方法返回的元素
有三個需要注意的地方:
1.從集合中返回的元素是Object類型的,所以我們需要手動進行類型轉換。
2.每次返回的是集合中元素的值而不是元素本身,所以我們不能通過改變返回的值而改變集合中元素本身。
3.我們不能在迭代訪問時改變集合中元素(但可以調用Iterator的remove方法),否則會引發異常。
下面的代碼示範了如何通過迭代器遍曆集合中元素:

package lkl;import java.util.Collection;import java.util.HashSet;import java.util.Iterator;public class IteratorTest {    public static void main(String[] args){        Collection c =new HashSet();        c.add("java");        c.add("c");        c.add("c++");        c.add("shell");        ///聲明一個Collection的迭代器        Iterator it = c.iterator();        while(it.hasNext()){            ///從集合中取出的元素都是Object類型的,需要進行類型轉換            String str = (String) it.next();            if(str=="shell"){                ///我們可以通過調用iterator的remove方法來刪除                ///上次迭代返回的元素,但是不能通過別的方法來改變集合中的元素                it.remove();                ///下面這句代碼會引發異常                ///c.add("python");            }            str="lkl";   ///我們不能通過改變迭代器的傳回值而改變集合中的元素        }        System.out.println(c);    }}

java5後還可以通過foreach迴圈來迭代訪問集合中的元素(就和訪問數組中元素一樣),使用foreach方法訪問時注意事項同上面的Iterator方法,下面的代碼示範了這種方法:

package lkl;import java.util.ArrayList;import java.util.Collection;public class ForeachTest {    public static void main(String[] args){        Collection c =new ArrayList();        c.add("java");        c.add("c");        c.add("c++");        c.add("shell");        for(Object cc : c){            String str = (String) cc;            System.out.println(str);        }    }}

java集合學習之Collection(1)

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.