美文网首页
第十一章:持有对象

第十一章:持有对象

作者: MAXPUP | 来源:发表于2017-11-30 20:23 被阅读0次

    Collection:Collection是描述所有序列容器的共性的根接口。AbstractCollection类提供了该接口的默认实现。List必须按照插入的顺序保存元素,Set不能有重复的元素,Queue按照排队规则确定加入取出的顺序。

    Arrays.asList()接受一个数组、用逗号分隔的元素列表、可变参数,将其转换为一个List对象

    Collections.addAll(collection, ...) 接受一个Collection对象、数组或者逗号分隔列表,将元素添加到Collection对象中。
    Arrays.asList()有时没有Collections.addAll灵活。

    class Snow{}
    class Powder extends Snow{}
    class Light extends Powder{}
    class Heavy extends Powder{}
    class Crusty extends Snow{}
    class Slush extends Snow{}
    
    public static void main(String[] args){
      List<Snow> snow1 = Arrays.asList( new Light(), new Heavy());
      //以下不会被编译
      //List<Snow> snow2 = Arrays.asList( new Light(), new Heavy());
      //因为Arrays.asList生成的是List<Powder>,不符合List<Snow>
      //Collections.addAll() 不会混淆
      List<Snow> snow3 = new ArrayList<Snow>();
      Collections.addAll(snow3, new Light(), new Heavy());
    
      //可以这样解决问题
      List<Snow> snow4 = Arrays.<Snow>asList( new Light(), new Heavy() );
    }
    

    List接口
    · ArrayList:擅长随机访问元素,插入和删除较慢
    · LinkedList:插入、删除效率高,提供了优化的顺序访问,随机访问较慢,特性集比ArrayList大。

    迭代器:
    迭代器是一个对象,它的工作是遍历并选择序列中的对象。java的大量类都实现了Iterable接口,接口方法iterator()要求容器返回一个Iterator。Iterator将准备好返回序列的第一个元素:
    1)使用next()获得序列中的下一个元素
    2)使用hasNext()检查序列中是否还有元素
    3)使用remove()将迭代器新近返回的元素删除
    ListIterator是Interator的强化子类型。它可以双向移动,还可以产生当前位置的前一个和后一个元素的索引,并可以使用set()方法替换访问的最后一个元素。
    栈:后进后出(LIFO)的容器,一般使用LinkedList实现栈。有push()推入元素,peek()和pop()(元素会从栈顶移除)返回元素。

    Set:不保存重复的元素,和Collection完全一样的接口。
    ·HashSet :使用了散列,速度快
    ·TreeSet :将元素存储在红-黑树数据结构中,对元素排序。
    ·LinkedHashSet:使用散列优化查询速度,使用链表维护元素的插入顺序。

    Map:一组成对的键值对。允许我们使用一个对象来查找某个对象。
    ·HashMap:一个最常用的Map,它根据键的HashCode 值存储数据,根据键可以直接获取它的值,具有很快的访问速度,遍历时,取得数据的顺序是完全随机的。
    ·TreeMap:保存了记录的插入顺序,在用Iterator遍历LinkedHashMap时,先得到的记录肯定是先插入的.也可以在构造时用带参数,按照应用次数排序。在遍历的时候会比HashMap慢。
    ·LinkedMap:实现SortMap接口,能够把它保存的记录根据键排序,默认是按键值的升序排序,也可以指定排序的比较器,当用Iterator 遍历TreeMap时,得到的记录是排过序的。

    Queue:典型先进先出(FIFO)的容器。LinkedList提供了方法以支持队列的行为,实现了Queue接口。

    - 抛出异常 返回值
    插入 boolean add(e) boolean offer(e)
    删除 e remove() e poll()
    获取元素 e element() e peek()

    优先级队列PriorityQueue:下一个弹出元素是最需要的元素。接口和Queue一样。

    相关文章

      网友评论

          本文标题:第十一章:持有对象

          本文链接:https://www.haomeiwen.com/subject/mkfbbxtx.html