list , set ,map 三者的用法以及區別
阿新 • • 發佈:2019-01-04
首先,講一下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