<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    工作小驛

    Ninja!

    BlogJava 首頁 新隨筆 聯系 聚合 管理
      103 Posts :: 0 Stories :: 36 Comments :: 0 Trackbacks
    上次課我們學過了數組,知道它只是一組數(或是對象),但是有些自己的特性。在java里還有一類東西與數組類似,也是有著特性的一組數(或是對象),叫做集合類。我們上節課講到了,數組的長度在創建時已經確定了,但是有時候我們事先根本不知道長度是多少啊,比如我們做電子商務網站時,有個購物車程序。你總不能用數組規定,人家只能買5樣東西吧。你就是把長度定為10000也不行,萬一遇上個特別有錢的呢!呵呵,這只是開玩笑的。我們會使用集合類解決這個問題。

         集合類是放在java.util.*;這個包里。集合類存放的都是對象的引用,而非對象本身,為了說起來方便些,我們稱集合中的對象就是指集合中對象的引用(reference)。引用的概念大家不會忘了吧,在前邊我們講數據類型時講的。

         集合類型主要有3種:set(集)、list(列表)、map(映射)和Queue(隊列)。//隊列為jdk5中的加上的  

    (1)    Set

    集(set)是最簡單的一種集合,它的對象不按特定方式排序,只是簡單的把對象加入集合中,就像往口袋里放東西。對集中成員的訪問和操作是通過集中對象的引用進行的,所以集中不能有重復對象。我們知道數學上的集合也是Set這個,集合里面一定是沒有重復的元素的。
    (2)List

    列表(List)的主要特征是其對象以線性方式存儲,沒有特定順序,只有一個開頭和一個結尾,當然,它與根本沒有順序的Set是不同的。它是鏈表嘛,一條鏈肯定有順序這個順序就不一定了。

         (3)Map

             映射(Map),這個在java里不是地圖的意思,其實地圖也是映射哈。它里面的東西是鍵-值對(key-value)出現的,鍵值對是什么呢?舉個例子,比如我們查字典,用部首查字法。目錄那個字就是鍵,這個字的解釋就是值。鍵和值成對出現。這樣說可以理解吧。這也是很常用的數據結構哦。

          (4)Queue

              在jdk5.0以前,通常的實現方式是使用java.util.List集合來模仿Queue。Queue的概念通過把對象添加(稱為enqueuing的操作)到List的尾部(即Queue的后部)并通過從List的頭部(即Queue的前部)提取對象而從 List中移除(稱為dequeuing的操作)來模擬。你需要執行先進先出的動作時可以直接使用Queue接口就可以了。

              這4個東西,有時候功能還不太完善,需要有些子類繼承它的特性。Set的子接口有TreeSet,SortedSet,List的有ArrayList等,Map里有HashMap,HashTable等,Queue里面有BlockingQueue等。我們來看看例子吧:

    實踐: Set舉例

           import java.util.*;

    public class SetExample {

                               public static void main(String[] args) {

                             Set set = new HashSet();  //HashSet是Set的子接口

                             set.add("one");

                             set.add("second");

                             set.add("3rd");

                             set.add(new Integer(4));

                             set.add(new Float(5.0F));

                             set.add("second");

                             set.add(new Integer(4));

                             System.out.println(set);

                               }} List舉例:

               import java.util.*;

    public class ListExample {

                                      public static void main(String[] args) {

                                    List list = new ArrayList();

                                    list.add("one");

                                    list.add("second");

                                    list.add("3rd");

                                    list.add(new Integer(4));

                                    list.add(new Float(5.0F));

                                    list.add("second");

                                    list.add(new Integer(4));

                                    System.out.println(list);

                               }}

    Map舉例

    import java.util.Map;

    import java.util.HashMap;

    import java.util.Iterator;

    import java.io.FileReader;



    public class MapExample {

                        public static void main(String[] args)  throws java.io.FileNotFoundException {

                                    Map word_count_map = new HashMap();

                                    FileReader reader = new FileReader(args[0]);

                                    Iterator  words = new WordStreamIterator(reader);



                                    while ( words.hasNext() ) {

                                          String word = (String) words.next();

                                          String word_lowercase = word.toLowerCase();

                                   Integer frequency = (Integer)word_count_map.get(word_lowercase);

    if ( frequency == null ) {

                                       frequency = new Integer(1);

                                   } else {

                                       int value = frequency.intValue();

                                              frequency = new Integer(value + 1);}

                                          word_count_map.put(word_lowercase, frequency);

                                    }

                                    System.out.println(word_count_map);

                                      }}

    Queue舉例:

    import java.io.IOException;

    import java.io.PrintStream;

    import java.util.LinkedList;

    import java.util.Queue;



    public class QueueTester {

      public Queue<String> q; //發現了一個奇怪的語法,這個尖括號是泛型聲明

                          public QueueTester() {q = new LinkedList<String>();}

    public void testFIFO(PrintStream out) throws IOException {

                                    q.add("First");

                                    q.add("Second");

                                     q.add("Third");

                                    Object o;

                             while ((o = q.poll()) != null) {

                                   out.println(o);}}

                 public static void main(String[] args) {

                      QueueTester tester = new QueueTester();

               try {  tester.testFIFO(System.out);

                             } catch (IOException e) {

                                   e.printStackTrace(); } }}

    上述例子和一些相關例子(共6個例子)打包下載
    http://www.100jq.com/upload/2007_07/07070811002751.rar

    總結:

    剛才我們看了上述例子了,對集合類有了一個初步的認識,它們跟數組的區別不只是長度問題,在集合類里面放進去的類型可以是任意的。不像數組,數組里面的類型是一樣的。這樣的話,對于集合類來說即使好事,也是壞事。因為你不考慮類型可以隨意的放,但是你放進去什么就不知道了不容易找。

    還有啊,什么叫泛型聲明啊?我們下次課就告訴你。這可是jdk5的酷炫之處哦。
    posted on 2007-07-09 08:05 王君 閱讀(525) 評論(1)  編輯  收藏 所屬分類: J2SE

    Feedback

    # re: 全新java初學者實踐教程10(java SE5.0版)----jdk5的集合類 2007-07-10 11:54 Persuse3
    這是百家拳軟件項目研究室,的原創教程,看全部教程請訪問 http://www.100jq.com/list.aspx?cid=11
      回復  更多評論
      

    主站蜘蛛池模板: 久久久久久亚洲精品成人| 免费在线视频一区| 亚洲国语精品自产拍在线观看 | gogo免费在线观看| 亚洲片一区二区三区| 一级一级毛片免费播放| 国产日产亚洲系列最新| 91在线免费观看| 亚洲AV日韩AV高潮无码专区| www视频在线观看免费| 涩涩色中文综合亚洲| 国产美女无遮挡免费网站| 美女免费视频一区二区| 亚洲婷婷国产精品电影人久久| 精品免费久久久久国产一区| 久久综合图区亚洲综合图区| 精品无码国产污污污免费网站| 久久久久亚洲国产| 亚洲国产成人影院播放| 18禁超污无遮挡无码免费网站 | 亚洲人成电影网站久久| 免费a级毛片永久免费| 一个人看的免费视频www在线高清动漫 | 国产精品自在自线免费观看| 免费视频成人国产精品网站| 亚洲一区二区三区无码中文字幕| 久久久久国产精品免费免费不卡| 亚洲av极品无码专区在线观看| 日本不卡在线观看免费v| 国产精品综合专区中文字幕免费播放| 亚洲国产精品自在在线观看| 少妇高潮太爽了在线观看免费| 真正全免费视频a毛片| 亚洲AV日韩精品久久久久久久| 四虎免费在线观看| 黄色视屏在线免费播放| 亚洲最大福利视频| 亚洲午夜福利AV一区二区无码| 国产乱码免费卡1卡二卡3卡| 无码的免费不卡毛片视频| 亚洲冬月枫中文字幕在线看 |