容器和泛型

来源:互联网 发布:mac怎么下载word软件 编辑:程序博客网 时间:2024/05/29 11:14

        在Java编程中,对象是个永恒的话题,你有对象没敲打,没有?那就new一个吧,哈哈~ 好了废话不多,开始正题,就如昨天所说,为啥开始写笔记,其中之一就是thinking in Java 第十一章,有关泛型和容器的问题真的很重要.在说泛型和容器之前我们先说说对象,我们平时编程中接触最多的就是对象了,谁让Java就是面向对象的编程呢,但是你会发现,我们不可能随时随地的就是用一个对象或者两个,三个?更多的时候我们使用很多对象.那么此时该怎么做呢,我想你也应该想到把这些对象装到一个容器里,要多少装多少,然后直接取用,那多方便.

但是你会发现,虽然容器在装对象的时候没有任何限制,但是取出来的时候会出现一个问题,这是因为作为一个容器他继承object类,而Java中所有对象都是最终继承object类的,因此在存入的时候没有任何问题,但是,取出来的时候它也会默认是object类的,这个时候就需要我们对应去转型,而此时就会出现麻烦,你并不知道取出来的是什么类型抓狂,这个时候泛型在这里就起作用了,它在申明容器时就固定了容器的类型,你只能存这个类型的类,其他类存就会报错.同样取出来的时候容器识别泛型的类型并自动帮你转型.泛型基本申明方式:List<Object> list = new ArrayList<Object>(); object就是你要申明的对象类型!

有关容器我们需要关注Collection和Map,Collection一个独立的元素序列,并且这些元素服从一个或者多个规则,Map则是一组成对的键值对对象,允许你使用键查找值.

在Collection中又有list:按照插入顺序保存元素

                             set:不能有重复的元素

                             queue:按照排队的规则来确定对象产生的顺序(即从一端插入对象,从另一端移除对象)

同时,list中又有ArrayList:按照插入顺序保存元素,也具有更快的查找元素,较慢的插入和移除元素

LinkedList:按照断开链接放入元素,也具有更快的插入元素,较慢的查找元素

          set中又有HashSet:使用相当复杂的方式存储元素(哈希表形式),同样它是最快获取元素方式.

         TreeSet:按照比较结果升序保存对象

         LinkedHashSet:按照被添加顺序保存对象

在Map中又有HashMap:它没有按照明显的顺序来保存元素(即无序的,它通过一种非常快的算法控制顺序),但是它却又最快的查找技术.

        TreeMap:按照比较结果的顺序保存键.

        LinkedHashMap:按照插入顺序保存键,同时保留HashMap的查找速度

有关容器的遍历方式我就不赘述了,网上一大堆,这里我只想说迭代器,因为自己还不是完全理解了只是会用,而且它很强大,先说它几个特性,明天继续说他的更重要特性,首先它拥有几个方法:          iterator(),他要求容器返回一个Iterator;

      next():获取序列的下一个元素;

      hasNext():检查序列中是否还有元素;

      remove():将迭代器新近返回元素删除,注意这里是新近返回元素,它意味着,首先是返回在移除,即:Iterator.next();然后才允许Iterator.remove();如下两种方式:

      List<Object> list = new ArrayList<Object>();

      Iterator<Object> it = list.iterator();

      while(it.hasNext()){

          Object o = it.next();

          o.remove();

      }

     for(Object o : list){

          System.out.println(o);

      }

好的,今天就到这里,给自己加油!明天继续!


原创粉丝点击