第11章 持有对象

Java集合类:List,Set,Queue,Map

11.1 泛型和类型安全的容器

    ArrayList保存的是Object,可以add任何类型的对象,但get时取出的是Object类型对象,进行具体操作前,必须进行转型。

    可以使用<>来指点ArrayList允许保存的类型(同时也就允许了它的导出类),取出时会自动知道真实类型,也就不需要再进行类型转换了。

11.2 基本概念

    容器类就是用来保存对象的,分为两种:

    1)Collection(集合类):一个独立元素的序列,有三种子类:List按插入顺序保存,Set不可有重复元素,Queue按照排队规则保存

    2)Map:一组成对的“键值对”对象,可使用键来查找值,允许使用另一个对象来查找某个对象。

    所有的collection都可以使用foreach语法遍历。

11.3 添加一组元素

   静态方法Arrays.asList()接受一个数组,或者是一个逗号分隔的元素列表,并将其转换为一个List对象。

   静态方法Collections.addAll()接受一个Collection对象,一个数组,一个逗号分隔的元素列表。(首选)

   Arrays. <类型参数> asList() 为显示类型参数说明。

11.4 容器的打印

   1)对于普通数组,必须使用Arrays.toString()来产生数组的可打印表示,但是打印容器无需任何帮助。

   2)ArrayList和LinkedList都是List,都按照插入的顺序来保存元素,只是操作性能不同。

   3)HashSet,TreeSet,LinkedHashSet都是Set类型,无重复对象。

        HashSet是最快的获取元素方式,TreeSet按照比较结果的升序保存对象,LinkedHashSet按照添加的顺序保存对象。

   4)Map.put(key,value)放值,Map.get(key)取值。

        HashMap是最快的获取元素方式,TreeMap按照比较结果的升序保存对象,LinkedHashMap按照添加的顺序保存对象。

11.5 List

    继承于Collection(它有3个子类:list,set,queue),添加了额外的方法,有两种类型:

    list的常用操作:add()增加元素,contains()确定某个对象是否在列表中,remove()移除一个对象,get()获取元素,indexof()获得元素的编号,sublist()获取子串,containsAll()判断是否包含子串,Collections.sort()排序,Collections.shuffle()混序,retainAll()取交集,removeAll()删除子串,set()替换指定位置的元素,isEmpty()判断是否为空,clear()清空串,toArray()转换为数组。

    1)基本的ArrayList长于随机访问元素,当插入和移除元素较慢 

    2)LinkedList,代价较低的进行插入和删除操作,优化的顺序访问,包含操作也更多。

11.6 迭代器

    迭代器是一个对象,工作是遍历并选择序列中的对象,能够将遍历序列的操作与序列底层的结构分离,迭代器统一了对容器的访问方式。

    一个Iterator只能用来:

    1)使用iterator()要求容器返回一个Iterator,而该Iterator将准备好返回序列的第一个元素

    2)使用next()获得序列中的下一个元素

    3)使用hasNext()检查序列中是否还有元素

    4)使用remove()将迭代器新近返回的元素删除

  11.6.1 Listlterator

    一个更强大的Iterator的子类型,只用于各种List类的访问,Listlterator可以双向移动,可以产生前后一个位置的索引,可以使set()替换访问过的最后一个元素。

11.7 LinkedList

   在list中间插入和移除时比ArrayList更高效,添加了用作栈、队列或双端队列的方法。

11.8 Stack

   可以直接将LinkedList作为栈使用。

11.9 Set

    不保存重复的元素,最常被使用的是测试其归属性,查找就成为了Set中最重要的操作,用的最多的是HashSet(专门对快速查找进行了优化)。

11.10 Map

   get(key),put(key,value),  containsKey(key),  containsValue(value)。

   可以将容器组合起来,从而快速的生成强大的数据结构。

   keySet()产生由map中所有键组成的Set。

11.11 Queue

   典型的先进先出的容器,常被用作一种可靠的将对象从程序的某个区域传输到另一个区域的途径。在并发编程中比较重要。

    LinkedList提供了方法以支持队列的行为,并且实现了Queue的接口,因此LinkedList可以用作Queue的一种实现。

 

 

 

 

 

 

 

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值