JAVA集合------萌新學習之路,Iterator、foreach 遍歷

Java集合大致分為三類:set、map、list(queue,JDK1.5之后新增,dictionary過時類似map鍵值對存儲形式)

使用時引入 java.util

set: 無序不可重復集合

map:具有映射關系的集合

list:有序,可重復的集合

集合示意圖

Paste_Image.png

Java的集合類主要由Java集合框架的根接口collection、map派生而來

Paste_Image.png

常用的collection和iterator接口

接口 描述
boolean add(Object o) 該方法用于向集合里添加一個元素,如果添加成功返回true
boolean addAll(Collection c) 該方法把集合c的所有元素添加到指定集合中,成功返回true
void clear() 清楚指定集合的所有元素,將集合長度變為0
**boolean contains(Object o) ** 返回集合是夠包含指定元素
boolean containsAll(Collection c) 返回集合是否包含指定元素
boolean isEmpty() 返回集合是否為空
iterator iteraot 返回一個iterator對象用于遍歷集合所有元素
boolean remove(Object o) 刪除集合中的o元素,如果集合中有多個刪除多個,成功返回true
boolean removeAll(Collection c) 從集合中刪除集合c里包含的所有元素,相當于集合減去c集合,如果集合元素刪除了一個或多個返回true
boolean retainAll(Collection c) 從集合中刪除不包含c集合里不包含的元素,返回true
int size() 返回集合元素的個數
Object[] toArray() 把集合轉換為一個數組,所有集合元素變成數組元素

代碼示例


public static void main(String[] args) {
        Collection c = new ArrayList();
        //添加元素
        c.add("鋼鐵是怎樣煉成的");
        //雖然Java集合不能存放基本類型,但是Java支持自動裝箱
        c.add(6);
        System.out.println("c集合的元素個數是"+c.size());
        //判斷是否包含指定字符串
        System.out.println("判斷集合c是否包含指定的字符串"+c.contains("鋼鐵"));
        c.add("朝花夕拾!");
        System.out.println("c集合的元素"+c);
        //刪除集合里的所有元素
        Collection books = new HashSet();
        books.add("鋼鐵是怎樣煉成的");
        books.add("茶花女");
        System.out.println("c集合是否完全包含books集合?"+c.containsAll(books));
        //c集合的元素減去books的元素
        c.removeAll(books);
        System.out.println("移除之后c集合的元素"+c);
        //刪除c集合中的所有元素
        c.clear();
        System.out.println("c集合的元素"+c);
        //books集合里值剩下c集合里也同事包含的元素
        books.retainAll(c);
        System.out.print("books里的元素"+books);

    }

}

**
ArrayList和HashMap實現類雖然不同,但是把他們當成Collection來使用時,使用 add、remove、clear等方法時完全一樣
所有Collection 的實現類重寫了toString()方法,該方法可以一次性輸出集合的所有元素
**

使用iterator接口遍歷集合元素

iterator迭代器主要用來遍歷集合元素

接口方法

方法 描述
boolean hasNext() 如果被迭代的集合元素都還沒有被遍歷,則返回true
Object next() 返回集合里面的下一個元素
void remove() 刪除集合里上一次next方法返回的元素

代碼示例

import java.util.ArrayList;
import java.util.Collection;
import java.util.HashSet;
import java.util.Iterator;
public class CellectionTest {
    public static void main(String[] args) {
        //創建一個集合
        Collection testCollection = new HashSet();
        //添加元素
        testCollection.add("霸王花!");
        testCollection.add("三生三世");
        testCollection.add("十里桃花");
     //   testCollection.clear();
        //獲取對應的iterator
      Iterator it = testCollection.iterator();
      while(it.hasNext()){
          //it.next()返回類型是Object需要強制轉換
          String str = (String)it.next();
          System.out.println(str);
          System.out.println(testCollection); 
          if(str.equals("三生三世")){
              it.remove();
          }
      }

    }

}


**
Collection中的元素不能 被改變,只有通過 Iterator的remove方法先刪除next方法返回的元素,不然將會引發java.util.ConcrrentModificationException異常
**

使用foreach遍歷集合元素

import java.util.ArrayList;
import java.util.Collection;
import java.util.HashSet;
import java.util.Iterator;
public class CellectionTest {
    public static void main(String[] args) {
        //創建一個集合
        Collection testCollection = new HashSet();
        //添加元素
        testCollection.add("十里桃花");
        testCollection.add("三生三世");
        testCollection.add("霸王花!");
     //   testCollection.clear();
        //獲取對應的iterator
      System.out.println(testCollection); 
      for(Object obj: testCollection){
          String str = (String) obj;
          System.out.println(str);
          if (str.equals("三生三世")){
        //    testCollection.remove();  引發異常
          }
      }
      System.out.println(testCollection);
    }

}

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • Collection ├List │├LinkedList │├ArrayList │└Vector │└Stac...
    AndyZX閱讀 892評論 0 1
  • 1.Java集合框架是什么?說出一些集合框架的優點? 每種編程語言中都有集合,最初的Java版本包含幾種集合類:V...
    Oneisall_81a5閱讀 908評論 0 11
  • title: java集合框架學習總結 tags:集合框架 categories:總結 date: 2017-03...
    行徑行閱讀 1,707評論 0 2
  • 1.Java集合框架是什么?說出一些集合框架的優點?每種編程語言中都有集合,最初的Java版本包含幾種集合類:Ve...
    yjaal閱讀 1,185評論 1 10
  • 此刻,是北京時間凌晨3點,近七個小時的車程,從長春到北京,昏昏沉沉睡了一路,來到火車站旁邊的德克士點了一份雞肉堡,...
    lucky粉豆閱讀 374評論 0 0