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)是可以重複的。
下面我們看一個例子來看看他們之間的區別:
-
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