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

ist , 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)是可以重複的。

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

  1. public class ListAndSetTest {

  2. /**

  3. * @param args

  4. */

  5. String string[]={"i","am","xiao","huang"};

  6. public void listtest(){

  7. List<String> list=new ArrayList<String>();

  8. for(String s:string){

  9. list.add(s);

  10. }

  11. for(int i=0;i<list.size();i++)

  12. {

  13. System.out.println("list的結果是:"+list.get(i));

  14. }

  15. }

  16. public void settest(){

  17. Set<String> set=new HashSet<String>();

  18. for(String s:string){

  19. set.add(s);

  20. }

  21. Iterator iterator=set.iterator();

  22. while(iterator.hasNext()){

  23. System.out.println("set的輸出結果是:"+iterator.next());

  24. }

  25. }

  26. public static void main(String[] args) {

  27. new ListAndSetTest().listtest();

  28. new ListAndSetTest().settest();

  29. }

  30. }

首先定義一個字串型別的陣列,分別用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