[Day19]Collection接口中的子类(List集合、Set集合)
1.List接口
1.1API总结
(1)是一个元素存取有序的集合
(2)是一个带有索引的集合,通过索引可以精确的操作集合中的元素
(3)集合中有可以重复的元素,通过元素的equals方法,来比较是否为重复的元素
(4)List接口的常用子类:ArrayList集合、LinkedList集合
1.2List接口中常用的方法
(1)add(Object e):向集合末尾处添加指定的元素
(2)add(int index,Object e):向集合指定索引处,添加指定的元素,原有元素依次后移
(3)remove(Object e):将指定元素对象,从集合中删除,返回值为被删除的元素
(4)remove(int index):将指定索引处的元素,从集合中删除,返回值为被删除的元素
(5)set(int index,Object e):将指定索引处的元素,替换成指定的元素,返回值为替换前的元素
(6)get(int index):获取指定索引处的元素,并返回该元素
1.3List集合3中遍历方式
(1)迭代器Iterator
(2)for循环
(3)加强for循环
1.4 Iterator的并发修改异常
(1)产生原因:在迭代过程中,使用了集合的方法对元素进行操作。导致迭代器不知道集合中的变化,易引发数据的不确定性
(2)错误报告:java.util.ConcurrentModificationException
(3)解决办法:在迭代过程中,不使用集合的方法操作元素,通过ListIterator迭代器操作元素
1.5List结合存储数据的结构
(1)堆栈-先进后出,栈的入口、出口都是栈的顶端位置
(2)队列-先进先出,队列的入口、出口各占一侧
(3)数组-查找元素快:通过索引,可以快速访问指定位置的元素
增删元素慢
(4)链表-多个节点之间,通过地址进行连接
查找元素慢,增删元素快
1.6ArrayList集合-数据存储的结构是数组结构,元素增删慢,查找快
1.7LinkedList集合-数据存储的结构是链表结构,方便元素添加、删除的集合,LinkedList提供了大量首尾操作的方法
1.8Vector集合-数据存储的结构是数组结构,为JDK中最早提供的集合。Vector集合已被ArrayList替代
2.Set接口
2.1Set接口
(1)Set接口的集合中所存储的元素是不重复的,是一个无序的集合
(2)通过元素的equals方法,来判断是否为重复元素
2.2HashSet集合-此类实现Set接口,由哈希表支持。HashSet集合不能保证迭代顺序和元素存储顺序相同
(1)数据存储方法
采用哈希表结构存储数据,保证元素唯一性的方法依赖于:hashCode()与equals()方法
(2)哈希表
将对象存放到数组中时,根据这些对象的特有数据结合相应的算法(hashCode方法),计算出这个对象在数组中的位置,然后将对象存放到数组中。
(3)hashCode方法
当向哈希表存放元素时,需要根据元素的特有数据结合相应的算法
(4)HashSet存储Java API中的类型元素
给HashSet中存储JAvaAPI中提供的类型元素时,不需要重写元素的hashCode和equals方法,因为这两个方法已经在Java中重写完毕,如String类、Integer类
给HashSet中存放自定义类型元素时,需要重写对象中的hashCode和equals方法,建立自己的比较方式,才能保证HashSet集合中的对象唯一
2.3LinkedHashSet
HashSet子类,是链表和哈希表组合的一个数据存储结构。保证元素的存入和取出的顺序
3.判断集合元素唯一的原理
3.1ArrayList的contains方法
(1)Boolean contains(Object o) 如果此列表中包含指定的元素,则返回true
(2)通过传入的元素的equals方法依次与集合中的旧元素比较,根据返回值判断
自定义类型在未重写equals方法前,判断的依据是地址,想根据内容判断需要重写元素的equals方法
3.2HashSet的add/contains等方法
(1)boolean add(E e) 如果此set中尚未包含指定元素,则添加指定元素
set集合中不能存放重复元素,在添加过程中进行判断,有则不添加,否则添加
(2)boolean contains(Object o) 如果此set包含指定元素,则返回true
HashSet集合由于是无序的,其判断唯一的依据是元素类型的hashCode和equals方法
先判断新元素与集合内已有的旧元素的hashCode值,不同添加,相同再判断equals比较结果,不同添加。如果存储自定义类型,需要重写元素类的两方法。
[Day19]Collection接口中的子类(List集合、Set集合)的更多相关文章
- Collection接口中方法的使用
Collection:集合的接口 1.Collection和ArrayList和List的关系 ArrayList implement(实现) List List ...
- Collection接口中的方法的使用
add(Object e):将元素e添加到集合coll中size():获取添加的元素的个数addAll(Collection coll1):将coll1集合中的元素添加到当前的集合中clear():清 ...
- 集合中Set接口与Collection接口,常用子类TreeSet,HashSet.
Set接口与List接口的不同之处在于: 不允许有重复的数据. 定义如下: public interface Set<E>extends Collection<E> 主要方法与 ...
- Java容器---Collection接口中的共有方法
1.Collection 接口 (1)Collection的超级接口是Iterable (2)Collection常用的子对象有:Map.List.Set.Queue. 右图中实现黑框的ArrayLi ...
- 3、Collection接口中的功能概述
package cn.itcast_01; import java.util.ArrayList; import java.util.Collection; /** * 集合: * 由于我们使用的是面 ...
- Map接口中的常用方法和Map集合遍历键找值方式
Map接口中定义了很多方法,常用的如下: public V put(K key,V value) 将指定的值与此映射中的指定键相关联(可选操作) V remove(Object key); 如果此映射 ...
- java中常用的数据结构--Collection接口及其子类
java中有几种常用的数据结构,主要分为Collection和map两个主要接口(接口只提供方法,并不提供实现),而程序中最终使用的数据结构是继承自这些接口的数据结构类. 一.集合和数组的区别 二.C ...
- Java中的集合(二)单列集合顶层接口------Collection接口
Java中的集合(二)单列集合顶层接口------Collection接口 Collection是一个高度封装的集合接口,继承自Iterable接口,它提供了所有集合要实现的默认方法.由于Iterab ...
- Java中的集合Collection接口
/* 集合:集合是存储对象数据的集合容器.集合比数组的优势: 1. 集合可以存储任意类型的对象数据,数组只能存储同一种数据类型 的数据. 2. 集合的长度是会发生变化的,数组的长度是固定的.----- ...
随机推荐
- dubbo负载均衡与集群集群容错
1.负载均衡 在集群负载均衡时,Dubbo 提供了多种均衡策略,缺省为 random 随机调用. 1. 负载均衡策略 Random LoadBalance 随机,按权重设置随机概率.(默认值)在一个 ...
- 华为mate10 UA
Dalvik/2.1.0 (Linux; U; Android 9; ALP-AL00 Build/HUAWEIALP-AL00) "user-agent": "Mozi ...
- Windows server 2012配置WebDeploy发布网站
以前都是使用win2008r2服务器,最近更新了操作系统到WINDOWS 2012,发现以前的做法已经不适用了. win2008r2配置WebDeploy: https://www.cnblogs.c ...
- 关于button去掉自带阴影效果的方法
在button的属性设置里加上: style=”?android:attr/borderlessButtonStyle” 即: <Button android:layout_width=&quo ...
- 解决 Composer-Setup.exe 安装过程中的报错
问题 在 Windows 7 执行 Composer-Setup.exe 以安装 Composer 过程中 上图中点击[Next]时,出现如下报错信息 原因分析 由上述提示信息,可推测两方面原因: 1 ...
- mybatis 保存对象 参数类型
简单介绍:保存单个对象 ,参数类型的设置,正常的话应该设置成对应的pojo,我想起了以前,不懂事时候的一个做法,其实那时候刚接触到mabatis,做新增的时候,直接就是把需要插入表中的值,放到map里 ...
- 剑指offer数组1
面试题3:数组中重复的数字 在一个长度为n的数组里的所有数字都在0到n-1的范围内. 数组中某些数字是重复的,但不知道有几个数字是重复的.也不知道每个数字重复几次.请找出数组中任意一个重复的数字. 例 ...
- 金蝶K/3 固定置产相关SQL语句
金蝶K/3 固定置产相关SQL语句 select * from vw_fa_card --固定置产打印原始数据 select FAssetID,FAssetNumber,FAssetName,FGro ...
- HTTP 403 ,tomcat配置HTTPS,无法访问 返回状态码HTTP 403
为了将本机(windows系统)启动的应用以HTTPS的形式访问, 利用Keytool 生成证书之后.在tomcat的server.xml中将配置修改为如下: <Connector port=& ...
- ExtJS5搭建MVVM框架
概述 · ExtJs5能够搭建Js的MVC框架,通过配置路由能够通过左边树形菜单导航到所需的页面,效果如下: 搭建JS框架 新建home.htm页面作为ExtJs加载的主体页面,页面引入ExtJs需要 ...