java--集合概述

java--集合概述

一、集合框架總覽圖

二、爲什麼需要集合

 

  • 爲什麼出現集合類?

面嚮對象語言對事物的體現都是以對象的形式,所以爲了方便對多個對象的操作,就要對對象進行存儲,集合就是存儲對象最常用的一種方式。

  • 數組和集合類同是容器,有何不同?

數組雖然也可以存儲對象,但長度是固定的;集合長度是可變的。數組中可以存儲任意數據類型,集合只能存儲對象。

  • 集合類的特點

集合只用於存儲對象,集合長度是可變的,集合可以存儲不同類型的對象。

三、集合分類概述

四、集合的兩大接口

Java集合類主要由兩個接口派生出來:
Collection

 

Set :不能存放重複對象

 

List :可存放重複對象,有序

 

Queue :隊列

 

SortedSet :可對集合數據排序

 

Map

SortedMap :可對集合數據排序

Collection和Iterator接口實例

package collection;

import java.util.ArrayList;
import java.util.Collection;
import java.util.Date;
import java.util.Iterator;


/**
 * 在集合裏的存儲,永遠存的是  一個引用地址
 * @author will
 *
 */
public class CollectionDemo {
	public static void main(String[] args) {
		
		Collection c = new ArrayList();
		/*
		 *  boolean add(E e) 
			          確保此 collection 包含指定的元素(可選操作)。 
			          
			 boolean addAll(Collection c) 
			          將指定 collection 中的所有元素都添加到此 collection 中(可選操作)。 
			 void clear() 
			          移除此 collection 中的所有元素(可選操作)。 

		 * */
		c.add("A");
		c.add("A");
		//c.add(1);//java5之前不允許,Java5之前沒有自動裝箱
		c.add(new Integer(1));//
		c.add(23);
		
		
		StringBuilder sb = new StringBuilder("SB");
		
		c.add(sb);
		boolean b = c.add("A");
		System.out.println(b);
		
		System.out.println(c);
		
		sb.append("OOXX");
		System.out.println(c);
		
		Collection c2 = new ArrayList();
		c2.add(new Date());
		c2.add("春哥");
		
		
		c.addAll(c2);
		
		System.out.println(c);
		
		//c.clear();
		System.out.println(c);
		
		/*
		 * boolean contains(Object o) 
		          如果此 collection 包含指定的元素,則返回 true。 
		 boolean containsAll(Collection<?> c) 
		          如果此 collection 包含指定 collection 中的所有元素,則返回 true。 

		 * */
		
		System.out.println(c.contains("春哥"));
		System.out.println(c.containsAll(c2));
		System.out.println(c2.containsAll(c));
		
		/*
		 *  boolean isEmpty() 
          			如果此 collection 不包含元素,則返回 true。 
		 * */
		
		System.out.println("c.isEmpty()=  "+c.isEmpty());
		
		/*
		 * boolean remove(Object o) 
		          從此 collection 中移除指定元素的單個實例,如果存在的話(可選操作)。 
		 boolean removeAll(Collection<?> c) 
		          移除此 collection 中那些也包含在指定 collection 中的所有元素(可選操作)。 
		 * */
		System.out.println(c.remove("鳳姐"));
		System.out.println(c.remove("春哥"));
		System.out.println(c);
		
		c.removeAll(c2);
		System.out.println(c);
		/*
		 *  boolean retainAll(Collection<?> c)  其實就是求兩個集合的交集
          		僅保留此 collection 中那些也包含在指定 collection 的元素(可選操作)。 
		 * */
		
		c2.add(23);
		c2.add("A");
		c.retainAll(c2);
		System.out.println(c);
		/**
		 *  int size()  返回此 collection 中的元素數。 
		 */
		
		System.out.println(c.size());
		/**
		 * Object[] toArray() 
          			返回包含此 collection 中所有元素的數組。 
		 */
		
		
		Object[] os = c.toArray();
		
		for (Object o : os) {
			System.out.println("-->" + o);
		}
		/**
		 * for-each使用的場合, 數組和 Iterable對象
		 */
		System.out.println("------------------");
		
		for (Object object : c) {
			System.out.println(object);
		}
		
		/**
		 *  Iterator iterator()    返回在此 collection 的元素上進行迭代的迭代器。 
		 *  
		 *  Iterator類:
		 *  boolean hasNext() 
		          		如果仍有元素可以迭代,則返回 true。 
		 	Object next() 
		          		返回迭代的下一個元素。 
		    void remove() 
		          		從迭代器指向的 collection 中移除迭代器返回的最後一個元素(可選操作)。 

		 */
		System.out.println("==================");
		Iterator it = c.iterator();
		
		//每調用next方法後,指針就會向後移動一個位置
		System.out.println(it.next());
		System.out.println(it.next());
		System.out.println(it.next());
		System.out.println(it.next());
		//System.out.println(it.next());//java.util.NoSuchElementException指針已到最後,沒有下一個元素了
		
		System.out.println(it.hasNext());
		if(it.hasNext()){
			System.out.println(it.next());
		}
		
		it = c.iterator();
		while(it.hasNext()){
			System.out.println("----->"+it.next());
		}
		
		/*
		 * for(it = c.iterator();it.hasNext();){
			System.out.println("for----->"+it.next());
			}
			
			老外喜歡用,就是因爲性能高一低;此時it在for語句裏創建,聲明週期短一些
		 * 
		 * */
		
		for(it = c.iterator();it.hasNext();){
			System.out.println("for----->"+it.next());
		}
		
		/**
		 * for-each
		 */
		
	}
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章