天天看點

Java Web簡明教程–Java篇[4]–常用容器

貓哥直接跳過了類、封裝、繼承,來講容器。此處稍微提下需要掌握的,對于類,掌握下面這個最基本的就夠了。

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);
  }
    }
}