集合可以理解為在內存中存放一組對象的容器,對象是數據的封裝,而對象又構成了集合。在java中的集合框架是一種線性的數據結構,但是它分為兩種,一種是物理結構,一種是邏輯結構。物理結構是一種連續存儲的結構,比如說數組;而邏輯結構可以理解為在內存塊中是不連續的,比如說鏈表,一個鏈表是分為兩中內容的,一個是該鏈表所存儲的數據,還有一個呢,那就是指向下一個鏈表的指針,通過指針而把表給連起來,稱之為鏈表。數組其實也是可以完成像集合一樣的存儲的,但是數組存在一定的弊端,數組一旦創建,其大小,類型是固定的,在特定的情況下不能更方便的使用,因此,為了與數組互補,集合也就應運而生了。
在java.util包中存在三種最重要的集合,其分別是list,set,map,它們各自有各自的特點,這三種都是接口。其中list:1> list的實現類主要有ArrayList,Linkedlist及其Vector,list中存儲的數據是有序的,而且也是可以重復的,也就是說list按照添加的順序,依次的tb存儲在list下標從小到大的位置。做一個簡單的代碼測試
public class Test {
public static void main(String[] args) {
Test test = new Test();
test.testList();
public void testList(){//類
//創建一個List對象
List list = new ArrayList();
list.add(1);
list.add(1);
list.add(2);
for(Object a:list){
System.out.print(a+" ");
}
}
此段代碼的運行結果為:{1 1 2}
反應了其有序可重復的特點。
2>set同樣是一個接口,它常用的實現類有Hashset,Treeset。set集合的存儲特點可以說是和list完全相反的,它是一種無序而且不能重復的存儲特點。同樣的用代碼做一個測試 public class Test {
public static void main(String[] args) {
Test test = new Test();
test.testSet();
public void testSet(){
//創建Set對象
Set set = new HashSet();
set.add(1);
set.add(2);
set.add(5);
set.add(3);
set.add(4);
set.add(1);
set.add(null);
System.out.println(set);
Iterator it = set.iterator();
while(it.hasNext()){//判斷有元素可迭代
int i = it.next();
System.out.print(i+" ");
}
}
}
}
此段代碼的運行結果是:{1 2 3 4 5}
可以說明其無序不可重復的特點。
3>最后則是map集合,map的實現類常用的有Hashmap,Hashtable和Treemap。
map與以上兩者稍微的有點不同,它是一種映射關系,在map中,存儲兩種數據,tb表達為map,而以上兩者都只有一個數據,而且都是通過下標來訪問的,map中k是不可以重復的,而v是可以重復的,進行一段代碼測試
public class Test{
public static void main(String[] args){
testmap test=new testmap();
public void testMap(){
Map map = new HashMap();
map.put(1, "aaa");
map.put(2, "bbb");
map.put(3,"ccc");
map.put(2, "ddd");
System.out.println(map);
//獲取key集合(Set)
Set set = map.keySet();
Iterator it = set.iterator();
while(it.hasNext()){
int key = it.next();
//通過key獲取對應的value值
String value = map.get(key);
System.out.println("key="+key+" value="+value);
}
}
}
}
此段代碼的運行結果是:key=1 value=aaa;key=2 value=ddd;key=3 value=ccc。
這三種集合各有其所試用的地方,對于像我這種初學者可以讓整個代碼簡化,思路更清晰。
二:獲得各種數據存儲方式長度的方法。
數組:定義一個數組Array[];那么獲得該數組長度的方法是使用其length方法。
字符串: String st = "aaa";
st.length();
這里的length是字符串的一種屬性,而數組的length是一種方法。
List:迭代或者直接通過下標輸出,list.size()
set:迭代while(it.hasNext()){//判斷有元素可迭代
int i = it.next();
System.out.print(i+" ");
}
map:只能用迭代的方法,
//獲取key集合(Set)
Set set = map.keySet();
Iterator it = set.iterator();
while(it.hasNext()){
int key = it.next();
//通過key獲取對應的value值
String value = map.get(key);
System.out.println("key="+key+" value="+value);
}
map先是通過迭代器先得到key值,因為是一種一一對應的關系,所以用key值就可以得到value值了。