1. 程式人生 > >Collection、List、Set、Map關係圖學習筆記1

Collection、List、Set、Map關係圖學習筆記1

用PD畫了一張相關介面、相關類及主要方法的圖 幫助加深理解與記憶


接著對主要類 做了個簡單的測試 更多的測試與學習 後續後補上

/**
 * 
 */
package com.undergrowth.util;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.Stack;

import org.junit.Test;

/**
 * 測試集合操作
 * 
 * @author Administrator
 * 
 */
public class CollectionTest {

	/**
	 * 泛型方法 對實現Iterable<E>介面的物件進行迭代
	 * 
	 * @param iterable
	 */
	public <E> void iterator(Iterable<E> iterable) {
		for (E e : iterable) {
			System.out.println(e);
		}
	}

	// 測試陣列
	private final String[] ITEMS = { "中國", "美國", "德國", "法國" };

	/**
	 * 建立ArrayList集合
	 * 
	 * @return
	 */
	private Collection<String> createArrayList() {
		Collection<String> collection = new ArrayList<String>();
		addData(collection);
		return collection;
	}

	/**
	 * 向陣列中新增元素
	 * 
	 * @param collection
	 */
	private void addData(Collection<String> collection) {
		// TODO Auto-generated method stub
		collection.addAll(Arrays.asList(ITEMS));
	}

	/**
	 * 測試ArrayList可變陣列
	 */
	@Test
	public void testArrayList() {
		Collection<String> collection = createArrayList();
		iterator(collection);
		System.out.println("刪除後,在進行迭代");
		collection.remove("中國");
		iterator(collection);
		System.out.println("測試是否包含中國:" + collection.contains("中國"));
		System.out.println("測試清除集合:");
		collection.clear();
		iterator(collection);
		System.out.println("測試清除集合後,是否為空:" + collection.isEmpty());
		addData(collection);
		iterator(collection);
		System.out.println("填充資料後,轉換為陣列");
		System.out.println("陣列元素個數:" + collection.toArray().length);
		System.out.println("擷取子列表,[0,2)");
		iterator(((List<String>) collection).subList(0, 2));
	}

	/**
	 * 建立堆疊元素
	 * 
	 * @return
	 */
	private Stack<String> createStack() {
		// TODO Auto-generated method stub
		Stack<String> stack = new Stack<>();
		stack.push(ITEMS[0]);
		stack.push(ITEMS[1]);
		stack.push(ITEMS[2]);
		return stack;
	}

	/**
	 * 測試堆疊 先進後出
	 */
	@Test
	public void testStack() {
		Stack<String> stack = createStack();
		iterator(stack);
		System.out.println("判斷堆疊是否為空:" + stack.empty());
		System.out.println("查詢堆疊元素的位置:" + stack.search("中國"));
		System.out.println("檢視棧頂元素:" + stack.peek());
		System.out.println("刪除棧頂元素:" + stack.pop());
	}

	/**
	 * 建立Set集合
	 * 
	 * @return
	 */
	private Set<String> createSet() {
		// TODO Auto-generated method stub
		Set<String> set = new HashSet<>();
		set.add(ITEMS[0]);
		set.add(ITEMS[0]);
		set.add(ITEMS[0]);
		set.add(ITEMS[1]);
		set.add(ITEMS[2]);
		set.add(ITEMS[3]);
		return set;
	}

	/**
	 * 測試HashSet
	 */
	@Test
	public void testHashSet() {
		Set<String> set = createSet();
		iterator(set);
	}

	/**
	 * 建立Map 鍵值對
	 * 
	 * @return
	 */
	private Map<String, String> createMap() {
		// TODO Auto-generated method stub
		Map<String, String> map = new HashMap<String, String>();
		map.put(ITEMS[0], ITEMS[0]);
		map.put(ITEMS[0], ITEMS[0]);
		map.put(ITEMS[1], ITEMS[1]);
		map.put(ITEMS[2], ITEMS[2]);
		map.put(ITEMS[3], ITEMS[3]);
		return map;
	}

	/**
	 * 測試HashMap
	 */
	@Test
	public void testHashMap() {
		Map<String, String> map = createMap();
		iterator(map.keySet());
		iterator(map.values());
	}

}