Java基础之-容器类概述

0.容器类

Java中,按照保存对象的不同,分为Collection和Map两种。其中Collection是一个独立元素的序列,又按照一定的规则,分为一下三类:

  • List 按照插入的顺序保存对象
  • Set 不能有重复元素
  • Queue 按照队列规则来确定对象产生的序列。

而Map,是一组成对的键值对 对象。

1.添加元素

在Java.util包中的Arrays和Collections有一些方法,可以在一个Collection中添加一组元素。

  • Arrays.asList
    这个方法接受一个数组或是一个用逗号分割的元素列表。使用方法如下。
        Integer[] ints = {1,2,3,4,5};
        // 返回的为Object
        List list_0 = Arrays.asList(ints);
        //显示类型参数
        List<Integer> list_1 = Arrays.<Integer>asList(ints);
        Collections.addAll(list_1,ints);
        list_0.addAll(Collection对象);

值得我们注意的是,

  • Arrays.asList输出的List,其底层表示是数组,不能调整其尺寸。
  • 可以通过显示类型参数来设置Array.asList返回列表类型

2.List

有两种类型的List。

  • ArrayList,擅长随机访问元素,但是在List中插入和删除元素速度比较慢。
  • LinkedList,优化了顺序访问,在中间进入插入和删除操作快,但是随机访问方面较慢。

一些基本的Api用法。

  • contains 来确定某个对象是否在列表中。
  • subList 允许你很容易地从较大列表中创建一个片段
  • retainAll 求交集的操作
2.1 LinkedList

LinkedList还添加了可以使其用作栈,队列或双端队列的方法。下面就简单说明一些api的区别。(很少的一部分)

  • getFirst 和 element 完全一样,返回列表的第一个元素,并不移除他。如果list为空,则抛出异常,而peek方法在list为空的时候,返回null
  • removeFirst 与 remove也完全一样,他们移除并返回列表的头,在列表为空时抛出异常,而poll方法,在列表为空时返回null。
  • addFirst add addLast相同,将某个元素插入到列表的尾部。
  • removeLast移除并返回列表的最后一个元素

3.Set

Set中不能保存重复的对象,有以下几类。

  • HashSet 使用了散列
  • TreeSet 使用红黑树的数据结构保存
  • LinkedHashSet 也使用了散列。

4.Queue

队列是一种典型的先进先出(FIFO)的容器。LinkedList提供了方法支持队列的行为,并且它实现了Queue接口。

  • offer 在允许的情况下,将一个元素插入到队尾,或者返回false
  • peek 和 element前面提到过了
  • poll和remove方法移除并返回队头。
4.1 PriorityQueue

优先级队列,当通过offer来插入对象时,这个对象会在队列中被排序,默认的顺序是自然顺序。

5.Map

将对象映射到其他对象。map也很容易扩展成多维。由于我们在开发中经常用到map,所以我们这里就不在多说了。

6.迭代器

迭代器是一个对象,它的工作是遍历并选择序列中的对象,迭代器是一个轻量级对象,创建他的代价很小。Java中的Iterator只能单项移动。

  • 使用iterator 要求容器返回一个Iterator
  • 使用next获得序列中的下一个元素
  • 使用hasNext检查序列中是否还有元素
  • 使用remove将迭代器最近返回的元素删除
6.1 ListIterator

这个迭代器比较强大,因为他可以双向移动。

  • hasPrevious 是否有前一个
  • previous 返回前一个的元素

7.总结

  • 数组将数字与对象联系起来,它保存类型明确的对象。数组一旦生成,就不能改变其容量了
  • List可以自动扩容,如果要进行大量的随机访问,就使用ArrayList,如果要经常在中间进行插入删除操作,就用LinkedList
  • 各种Queue以及栈的行为,由LinkedList提供支持。
  • HashMap设计用来快速访问,而TreeMap保持“键”始终处在排序状态,所以没有HashMap快,LinedHashMap保持元素插入的顺序,但是也通过散列保存元素。

接下来会对这些进行详细的分析,敬请期待

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值