1. 程式人生 > >list , set ,map 三者的用法以及區別

list , set ,map 三者的用法以及區別

首先,講一下list和set之間的相似性,list和set都是單列集合,他們有一個共同的父介面---collection。list是依次列出一個結合中的所有的元素,若集合中有重複的,同樣列出,有序;set列出的集合中是不允許有重複的,也就是說裡面有一個A物件和一個B物件,若是A.equals(B)==ture,那麼用set方法列出的只會有一個,set集合預設是有序的,正向排序。一般遍歷set裡面的元素時使用iterator

map<key,value> 它是一個雙列的集合。裡面有一個key,和一個value,其中value是真正儲存值得變數。map儲存的資料是無序的,其鍵(key)不能重複,但是其值(value)是可以重複的。

下面我們看一個例子來看看他們之間的區別:

public class ListAndSetTest {

	/**
	 * @param args
	 */
	String string[]={"i","am","xiao","huang"};
	public void listtest(){
		List<String> list=new ArrayList<String>();
		for(String s:string){
			list.add(s);		
		}
		for(int i=0;i<list.size();i++)
		{
			System.out.println("list的結果是:"+list.get(i));			
		}
	}
	public void settest(){
		Set<String> set=new HashSet<String>();
		for(String s:string){
			set.add(s);
		}
		Iterator iterator=set.iterator();
		while(iterator.hasNext()){
			System.out.println("set的輸出結果是:"+iterator.next());
		}
	}
	public static void main(String[] args) {		
		new ListAndSetTest().listtest();
		new ListAndSetTest().settest();
	}

}


首先定義一個字串型別的陣列,分別用list和set方法依次取出陣列中的值,然後打印出來

結果如下:

list的結果是:i
list的結果是:am
list的結果是:xiao
list的結果是:huang
set的輸出結果是:am
set的輸出結果是:xiao
set的輸出結果是:huang
set的輸出結果是:i

下面是map的示例:

public void maptest(){
		Map<Integer, String> map=new HashMap<Integer, String>();
		for(String s:string){
			map.put(s.length(), s);
			System.out.println("map的輸出結果是:"+map.get(s.length()));
		}
		
		
	}


這裡寫程式的時候要注意一個問題,就是來給string陣列賦值的時候一定要保證每一個的長度都是不一樣的,因為map中的key要求是不同。

結果如下:

map的輸出結果是:i
map的輸出結果是:am
map的輸出結果是:xiao
map的輸出結果是:huang