貓哥直接跳過了類、封裝、繼承,來講容器。此處稍微提下需要掌握的,對于類,掌握下面這個最基本的就夠了。
public class TypeName{//類名稱
//成員變量定義
int i;
string x;
//成員函數定義
public int add(){}
}
對于封裝、繼承甚至後面的接口、抽象類、内部類等Java文法,脫離了應用場景去學習是很飄渺的,是以在以後用到的時候再說明。在目前這個階段,會定義類,然後實作類的對象,調用類的方法,可以了。
繼續本篇的正題:常用容器。貓哥也不過多解釋紛繁複雜的繼承關系,簡單把常用容器分類三類:List、Set、Map。
List是有序的元素集,常用的有ArrayList和LinkedList,其中ArrayList有點像數組,查詢速度快,插入、删除速度慢。而LinkedList像連結清單,查詢速度稍慢,插入、删除速度較快。List使用get(i)擷取第i個元素(i就是順序),使用add()添加元素。
Set是不包含重複元素的元素集。常用的有HashSet和TreeSet,HashSet性能好,比較常用。那還要TreeSet幹哈呢,人家TreeSet能排序哦。
Map是key-value映射的元素集,也就是說Map中的每個元素包含兩個部分,key表示元素的索引鍵,而value是該鍵對應的值。是以添加元素是put(key,value),擷取元素是get(key),那key不存在get(key)就傳回null了。
常用的類是HashMap。
說白了,List、Set、Map是三種接口,而ArrayList、LinkedList、HashSet、TreeSet、HashMap等是接口的具體實作類。
其實List和Set還是很像的,都是單個元素的元素集,是以他倆其實都有一個最基本的接口即Collection,這個Collection接口的标準非常簡單,就是Object的集合,可以包含很多個Object。OK,寫一段詳細的代碼示範下:
import java.util.*;//容器類所在的包得導入進來
/**
* 容器使用示範
* @作者 貓哥
* @編碼時間 2016.12.27
*/
public class ContainerDemo {//定義了一個類,用來示範容器的使用
public static void main(String[] args) {//這個方法是程式的入口
System.out.println("開始比較ArrayList和ArrayList");
ArrayList stringList=new ArrayList();//這個ArrayList隻能添加String類型元素
ArrayList objectList=new ArrayList();//這是一個無類型說明的ArrayList,可以添加任意Object
stringList.add("hello 101");//隻能添加String類型的元素
stringList.add("hello 102");
System.out.println("周遊輸出 stringList");
for(int i=0;i
System.out.println(stringList.get(i));
}
System.out.println("foreach輸出 stringList 因為裡面的元素都是統一的");
for(String str:stringList){
System.out.println(str);
}
objectList.add(103);//添加不同種類的元素,其實添加的是引用的值
objectList.add("hello 103");
System.out.println("周遊輸出 objectList");
for(int i=0;i
System.out.println(objectList.get(i));
}
System.out.println("foreach輸出 objectList ");
for(Object obj:objectList){
System.out.println(obj);
}
System.out.println("開始示範HashSet和TreeSet");
HashSet hashSet=new HashSet();
TreeSet treeSet=new TreeSet();
hashSet.add("a");
hashSet.add("b");
hashSet.add("d");
hashSet.add("c");
hashSet.add("a");
Iterator irhashSet=hashSet.iterator();//Iterator用于周遊
System.out.println("輸出可見a排除重複了,注意HashSet不儲存存放時候的順序");
while(irhashSet.hasNext()) {
System.out.println(irhashSet.next());
}
treeSet.add("a");
treeSet.add("b");
treeSet.add("d");
treeSet.add("c");
treeSet.add("a");
Iterator irTreeSet=treeSet.iterator();//Iterator用于周遊
System.out.println("輸出可見a排除重複了,TreeSet是有确定順序的,一般是從小到達,從前到後");
while(irTreeSet.hasNext()) {
System.out.println(irTreeSet.next());
}
HashMap hashMap=new HashMap();//key不可重複,value可以
hashMap.put("學号001", "姓名張三");
hashMap.put("學号002", "姓名李四");
hashMap.put("學号003", "姓名張三");
Iterator irHashMap = hashMap.keySet().iterator();//keySet()把hashMap中的key值整理為set
while (irHashMap.hasNext()){
Object key = irHashMap.next();//擷取key
Object val = hashMap.get(key);//擷取對應value
System.out.print(val);
}
}
}