吉林企业做网站,wordpress收不到邮箱验证,海口网红景点,阳江招聘网最新招聘2023集合概述
#xff08;1#xff09;集合是存储其他对象的特殊对象。可以将集合当做一个容器。
#xff08;2#xff09;集合的相关接口和类位于java.util包中
#xff08;3#xff09;集合中的接口和类是一个整体、一个体系。 集合接口
接口定义了一组抽象方法#x…集合概述
1集合是存储其他对象的特殊对象。可以将集合当做一个容器。
2集合的相关接口和类位于java.util包中
3集合中的接口和类是一个整体、一个体系。 集合接口
接口定义了一组抽象方法实现该接口的类需要实现这些抽象方法从而实现接口的类就具备了接口所规定的行为功能。
集合框架定义了一些接口它们决定了集合类的本质特性。具体的集合类只是提供了标准接口的不同实现。
接 口描 述Collection允许操作一组对象它位于集合层次结构的顶部List扩展Collection以处理序列(对象列表)Set扩展Collection以处理组组中的元素必须唯一
注意
Set类型的集合实现Set接口的类称为集有些资料称为组其特点是组中的元素必须唯一。
Collection接口
Collection接口是构建集合框架的基础Collection是泛型接口其声明如下
interface Collection
其中E指定了集合将存储的对象类型。
提示
1.集合中只能存储对象不能存基本类型。
2.使用泛型的优点是在编译时可以检查元素的类型从而更加安全。
Collection接口扩展了Iterable接口。这意味着所有集合都可以使用for-each风格的for循环进行遍历。
方 法描 述boolean add(E obj)将obj添加到调用集合。boolean addAll(Collection? extends E c)将c中的所有元素添加到调用集合中。boolean remove(Object obj)从调用集合中删除obj的一个实例。boolean removeAll(Collection? c)从调用集合中删除c的所有元素。void clear()删除调用集合中的所有元素boolean contains(Object obj)如果obj是调用集合的元素则返回true。boolean isEmpty()如果调用集合为空则返回true。int size()返回调用集合中元素的数量Iterator iterator()返回调用集合的一个迭代器containAll(Collection c)
提示
1、Collection接口中没有提供修改元素的方法。
2、Collection接口的父接口是Iterable接口实现了Iterable接口的类是可以迭代的。
List接口
List接口扩展了Collection并且声明了存储一连串元素的集合的行为。在列表中可以**使用从0开始的索引通过它们的位置插入或访问元素。列表可以包含重复的元素。**其声明如下
interface List
方 法描 述void add(int index, E obj)将obj插入到index所指定的位置。boolean addAll(int index, Collection?extends E c)将c的所有元素插入到index所指定的位置。E remove(int index)删除index位置的元素E set(int index, E obj)将index所指定位置的元素设置为objE get(int index)返回指定索引处存储的对象int indexOf(Object obj)返回第一个obj实例的索引。int lastIndexOf(Object obj)返回列表中最后一个obj实例的索引ListIterator listIterator()返回一个迭代器该迭代器从列表的开头开始ListsubList(int start,int end)返回一个子列表。
注意
List接口中操作元素的方法许多都提供了index参数这是与Collection接口中所提供相关方法的主要区别。
Set接口
Set接口定义了组/集/集合(set)。它扩展了Collection接口并声明了不允许重复元素的集合的行为。如果为集合添加重复的元素add()方法会返回false。声明如下
interface Set
Set接口没有添加自己的方法。
SortedSet接口扩展了Set接口并且声明了以升序进行排序的集合的行为。
interface SortedSet
SortedSet定义了一些便于进行集合处理的方法。例如为了获得集合中的第一个对象可以调用first()方法。为了得到最后一个元素可以使用last()方法。
NavigableSet接口扩展了SortedSet接口并且该接口声明了支持基于最接近匹配原则检索元素的集合行为。
注意
Set相关接口表示的集合没有索引的概念。
集合类
类描 述ArrayList动态数组LinkedList链表ArrayDeque双端队列 队列 堆栈PriorityQueue支持基于优先级的队列HashSet使用哈希表存储元素的组LinkedHashSet扩展HashSet类以允许按照插入的顺序进行迭代TreeSet实现存储于树中的集合。 Arraylist类
ArrayList实现了List接口。本质上是元素为对象引用的长度可变的数组。
构造方法 ArrayList( ) //长度取默认值 10 ArrayList(int capacity) //指定长度容量
泛型
T 代表一般的任何类。
E 代表 Element 元素的意思或者 Exception 异常的意思。
K 代表 Key 的意思。
V 代表 Value 的意思通常与 K 一起配合使用。
LinkedList类
LinkedList类实现了List、Deque以及Queue接口。它提供了**双向链表数据结构**。
LinkedList具有两个构造方法
LinkedList( )
LinkedList(Collection? extends E c)
ArrayList与LinkedList的区别
1、ArrayList是基于数组结构的集合有容量的概念LinkedList是基于链表结构的集合没有容量的概念
2、对于随机访问get和set方法ArrayList优于LinkedList因为LinkedList要移动指针。
3、对于新增和删除操作add和remove方法LinkedList比较占优势因为ArrayList要移动数据。但是如果只是在末尾追加元素效率差不多。
4、LinkedList 还实现了Queue接口,该接口比List提供了更多的方法,包括 offer(),peek(),poll()等。
HashSet
HashSet类实现了Set接口。该类在内部使用哈希表存储元素。
哈希表使用称之为散列法(hashing)的机制存储信息。哈希法的优点是add()、contains()、remove()以及size()方法的执行时间保持不变即使是对于比较大的集合也是如此。
HashSet( ) //默认容量是16
HashSet(int capacity)
HashSet(int capacity, float fillRatio) //填充率0.0-1.0之间默认加载因子0.75
HashSet(Collection? extends E c)
HashSet中元素不是按有序的顺序存储的遍历输出HashSet中的元素时精确的输出可能不同。
初始容量 倒是好理解顾名思义初始容量只是哈希表在创建时的容量那么 加载因子 到底是表示什么意思呢
如果按术语来讲 加载因子是哈希表在其容量自动增加之前可以达到多满的一种尺度。如果当哈希表中的条目数超出了加载因子与当前容量的乘积时,则要对该哈希表进行rehash()操作,从而哈希表将具有大约两倍的桶数。
例子
比如说向水桶中装水此时HashMap就是一个桶 这个桶的容量就是加载容量而加载因子就是你要控制向这个桶中倒的水不超过水桶容量的比例比如加载因子是0.75 那么在装水的时候这个桶最多能装到3/4 处超过这个比例时桶会自动扩容。因此这个桶最多能装水 桶的容量 * 加载因子。
如果桶的容量是16加载因子是0.75 那么你的桶最多能装16*0.75 12的水如果你装了12的水还想继续装水那么就该用大一点的桶调用rehash就是负责增加桶的容量的方法当然这个rehash这个方法是内部调用的。
LinkedHashSet类
LinkedHashSet类扩展了HashSet类它没有添加它自己的方法。
LinkedHashSet在内部使用一个链表维护元素添加到集合中的顺序因此可以按照插入顺序迭代集合。
TreeSet类
TreeSet类实现了NavigableSet接口该类在内部使用树结构存储元素。元素以升序存储访问和检索相当快。TreeSet适合于存储大量的、必须能够快速查找到的有序信息。
Set与List的区别
1、Set中的元素无序不能重复List中的有序元素可以重复。
2、List有索引下标的概念Set没有索引的概念。
3、对于Set表示的集合通常是遍历操作没有get()和set()方法。
注意
TreeSet以升序保存对象所以TreeSet中保存的对象比较能够比较大小即TreeSet保存的对象类型必须实现Comparable接口。
注意
HashSet是无序的LinkedHashSet和TreeSet是有序的。