首页 > 编程语言 > 详细

极*Java速成教程 - (5)

时间:2019-11-26 15:33:27      阅读:70      评论:0      收藏:0      [点我收藏+]

Java语言基础

容器

这个世界是有序的,将Java对象零散地放到内存中是不符合世界常理的,特别是有一大组相似的甚至不知道有多少数据的时候。把Java对象装进盒子里可以有序收纳,这个盒子就叫容器。

初次了解泛型

泛型,就是泛泛而指的类型,就是不确定具体类型的类型。Java提供的容器,一般都支持泛型,也就是说不管是什么对象,都可以丢到容器中进行收纳。但在Java中,所有类都继承自Object,所以把对象当作Object对象丢到容器里不会有任何问题,但当拿出来这个Object的时候,由于不知道这个对象的真正类型是什么,就可能在向下转型的时候出现错误,为了避免这种情况,一般对容器使用<type>表示容器的具体类型参数,也就是容器里放什么类就确定了,编译器就会对类型进行检查,避免运行时Object对象向下转型时错误的发生。例如:

List<Apple> apples = new ArrayList<Apple>();

你应当创建一个具体类的对象,将其转型为对应的接口,然后在其余的代码中都使用这个接口。

容器的类型

Collection

一个独立元素的序列,符合某种规则,提供迭代器,可以用foreach进行迭代遍历,也就是提供一个方法,可以每次从序列中从前到后依次拿到每一个元素。

  • List
    有序的序列,对象元素按照插入顺序保存
    • ArrayList
      连续储存的List,可以使用数字来查找值,随机查找快,但插入和移除元素时慢。
    • LinkedList
      链表储存的List,只能顺序遍历,但插入和移除元素快,可以实现栈和队列的功能。
      • Queue 队列,先进先出
      • PriorityQueue 优先级队列,先进和优先级高的先出
  • Set
    不能保存重复数据,常用来处理归属性问题等。
    • HashSet
      使用Hash散列的Set,查找元素快
    • TreeSet
      使用红黑树实现了排序的Set,按照排序结果升序保存对象
    • LinkedHashSet
      按照添加顺序保存对象的Set
  • Queue
    队列,只能从队头删除元素从队尾插入元素,元素按照插入顺序先进先出。
    技术分享图片

Map

成对的“键-值对”对象,可以用键来查找值。

  • 映射表/关联数组/字典
    可以使用对象来查找对象,键不能存在重复。

在Map中,可以使用get()方法通过key获取value的值;还可以使用方法检查一个k或者是v是否在map中;使用方法获取k或v的set。

技术分享图片

容器的方法

具体方法不再赘述,用多了自然就会了,编程是一个纸上得来终觉浅的技术,真正的写代码才能熟练掌握。
但是容器的方法常见的有

add()
remove()
indexOf()
subList()
retainAll()
removeAll()

等,也就是增删改查方法......
容器内对象的比较使用的是equals()

迭代器

迭代器是一个可以每次从容器中顺序抽取出一个对象进行遍历的工具,迭代器掩盖了遍历的底层实现,让遍历的操作与低层的实现相分离,遍历者只需要知道“从这个迭代器里可以不重复地从前到后拿到容器中的每一个元素”就好,而不用关心是从什么容器,和从容器中具体怎么拿的。

迭代器的使用

  • 首先通过Iterator()获取一个迭代器对象
  • 然后使用next()方法获取下一个元素
  • hasNext()可以检查序列中是否还有元素

迭代器可以搭配循环使用,还可以直接使用foreach循环。容器基于Collection,而Collection是继承Iterable接口的,是与iterator()方法绑定到一起的(参见Java文档)。

for(Obj o : ListA){
}
while(Obj.next()){
}

可以通过增加或者覆盖默认迭代器的方法,返回一个迭代器对象,实现自己的迭代器效果。

ListIterator

仅可以在List中使用的双向的迭代器

极*Java速成教程 - (5)

原文:https://www.cnblogs.com/CoveredWithDust/p/11935421.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!