Java基础之-容器类概述

    xiaoxiao2025-06-18  2

    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为空的时候,返回nullremoveFirst 与 remove也完全一样,他们移除并返回列表的头,在列表为空时抛出异常,而poll方法,在列表为空时返回null。addFirst add addLast相同,将某个元素插入到列表的尾部。removeLast移除并返回列表的最后一个元素

    3.Set

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

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

    4.Queue

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

    offer 在允许的情况下,将一个元素插入到队尾,或者返回falsepeek 和 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保持元素插入的顺序,但是也通过散列保存元素。

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

    转载请注明原文地址: https://ju.6miu.com/read-1300089.html
    最新回复(0)