javase集合 温故而知新
复习javase集合
1、为什么要有集合?
数组长度需要在初始化时确定大小,数据结构单一、因此集合出现了
2、数组和集合的区别
区别一:数组既可以存储基本数据类型,又可以存储引用类型,集合只能存储引用类型
区别二:数组在初始化的时候就需要确认大小,集合有默认初始大小和扩容机制
区别三:集合类有丰富的封装方法
UML图
粗边框的是常用的的类,虚线边框是接口

集合的两大接口
Collection 接口
常用方法:
| 方法名 | 说明 | 返回类型 | 参数 |
|---|---|---|---|
| add | 添加元素到末尾 | boolean | 添加的元素对象 |
| addAll | 合并另一个Collection | boolean | 实现了Collection的集合 |
| contains | 检查是否包含某个元素 | boolean | 元素对象 |
| containsAll | 检查是否包含集合 | boolean | 实现了Collection的集合 |
| isEmpty | 集合是否为空 | boolean | 无参 |
| remove | 移除元素 | boolean | 元素对象 |
| removeAll | 移除集合中有另一个集合的元素 | boolean | 实现了Collection的集合 |
| size | 返回集合大小 | int | 无参 |
| toArray | 转换成数组 | [ ] | 无参 |
遍历方式:
- 迭代器 Iterator (需要删除元素时推荐用这个)
- forEach
实现接口:List、Set
List常用方法
| 方法名 | 说明 | 返回类型 | 参数 |
|---|---|---|---|
| add(String item, int index) | 添加元素到指定位置 | void | 索引,元素 |
| addAll(int index, Collection<? extends E> c) | 添加集合到指定位置 | boolean | 索引,集合 |
| get(int index) | 获取值 | 元素 | 索引 |
| indexOf(Object o) | 判断List中是否有这个元素,有返回索引,无返回-1 | int | 元素 |
| listIterator() | 返回List迭代器 | ListIterator | 无参 |
| listIterator(int index) | 返回List迭代器,光标移动到参数索引处 | ListIterator | 索引 |
| remove(int index) | 移除List元素 | 元素 | 索引 |
| set(int index, E element) | 替换元素 | 元素 | 索引,元素 |
| subList(int fromIndex, int toIndex) | 分割List | List | 开始索引,结束索引 |
| retainAll(Collection<?> c) | 仅保留包含在指定集合中的此集合中的元素 | boolean | Collection |
| lastIndexOf(Object o) | 返回此列表中指定元素的最后一个发生的索引,如果没有返回-1 | int | 元素 |
List特有遍历方式:
- get
- List迭代器
List常用实现类
- ArrayList
特点:查找速度快,删除添加元素慢,因为底层使用数组,索引位置变化,大于索引的都要往前移一个,线程不安全 - LinkedList
特点:查找速度慢,删除添加元素速度快,因为底层使用链表,需要从头或者从尾开始一个一个查找,复杂度为O(n),删除添加只需要改变上一个节点的引用即可,线程不安全
Set常用方法
| 方法名 | 说明 | 返回类型 | 参数 |
|---|---|---|---|
| retainAll(Collection<?> c) | 仅保留包含在指定集合中的此集合中的元素 | boolean | Collection |
| ... | ... | ... | ... |
Set特点:
无序,存储元素不可重复,元素必须重写hashCode和equlas方法
Set常用实现类
HashSet
特点:元素完全使用HashMap的key来存储,线程不安全TreeSet
特点:使用红黑树为元素排序,更改默认排序有两种方式- 构造函数中传入Comparator
- 元素实现Comparable
线程不安全
LinkedHashSet
特点:HashSet的子类,使用链表来存储插入的顺序,value是LinkedHashMap的key。需要遍历完全部元素的情况下比HashSet效率高。线程不安全
Map接口
常用方法:
| 方法名 | 说明 | 返回类型 | 参数 |
|---|---|---|---|
| put | 添加 | void | key,value |
| putAll | 合并另一个Map | void | 实现了Map的集合 |
| containsKey | 是否包含key | boolean | key |
| containsValue | 是否包含这个值 | boolean | value |
| keySet | 返回Map所有的key | Set | 无参 |
| values | 返回Map所有的value | Collection | 无参 |
| entrySet | 返回key value | Entry | 无参 |
| remove | 删除 | value | key |
| remove | 如果key和value相匹配则删除 | boolean | key,value |
| size | 返回有多少个元素 | int | 无参 |
| clear | 清除 | void | 无参 |
遍历方式:
- entrySet (最常用 性能好)
- values
- keySet
- Iterator
javase集合 温故而知新的更多相关文章
- JavaSE集合(十)之Map
前面给大家介绍了集合家族中的Collection家族,这一篇给大家分享的是集合中的另一个家族就是Map家族.以前的时候学习Map的时候没有很认真的去学习,我觉得很多东西还是不是很清楚. 这次我将总结的 ...
- JavaSE集合(八)之Map
前面给大家介绍了集合家族中的Collection家族,这一篇给大家分享的是集合中的另一个家族就是Map家族.以前的时候学习Map的时候没有很认真的去学习,我觉得很多东西还是不是很清楚. 这次我将总结的 ...
- JavaSE集合基础总览
Java集合 Java集合,也称之为容器.基本上你写所有的Java程序,都必须要用到一个包.该API基本都位于java.util工具类包中,是JavaSE中的重中之重.简单可以总结为“1136”,分别 ...
- JavaSE| 集合
集合 l Collection 层次结构中的根接口.Collection 表示一组对象,这些对象也称为 collection 的元素.一些 collection 允许有重复的元素,而另一些则不允许. ...
- JavaSE 集合概述
1.对象的存储: 数组(基本数据类型 & 引用数据类型) 集合(引用数据类型) 2.集合框架 Collection 接口: 方法: iterator().toArray(); 迭代器遍历集合 ...
- [javaSE] 集合框架(体系概述)
为什么出现集合类 为了方便对多个对象的操作,对对象进行存储,集合就是存储对象最常用的一种方式 数组和集合的不同 数组是固定长度的,集合是可变长度的 数组可以存储基本数据类型,集合只能存储对象 数组只能 ...
- JavaSE 集合补充点(JDK1.9对集合添加的优化)
通常,我们在代码中创建一个集合(例如,List 或 Set ),并直接用一些元素填充它. 实例化集合,几个 add方法调用,使得代码重复. public class Demo01 { public s ...
- [javaSE] 集合框架(共性方法)
Collection接口的常用方法 add(),添加一个元素 addAll(),添加一组元素 clear(),清空 remove(),移除一个 removeAll(),移除一组 size(),元素个数 ...
- [javaSE] 集合框架(TreeSet)
TreeSet:可以对Set集合中的元素排序,默认按照ascii表排序,二叉树结构 左边叉是小的,右边叉是大的 存储自定义对象 定义一个类Student实现Comparable类,使自定义类具备比较性 ...
随机推荐
- maven下载出现unknown文件夹
问题场景 maven下载配置完成后,发现如上图代码包下载失败,本地maven库中出现unknown文件夹,也就是说,maven无法定位下载到上面的代码包. 解决过程 仔细观察发现,所有下载失败的代码包 ...
- 使用SpringDataJdbc无法注册的情况
当 EnableJdbcRepositories 注解无法注册Repository仓库的时候,你可以查看下 你的实体是否存在@Table注解,没有请加上,这样就能扫描到了 @Table("b ...
- Elasticsearch 在部署时,对 Linux 的设置有哪些优化方法?
1.64 GB 内存的机器是非常理想的, 但是 32 GB 和 16 GB 机器也是很常见的.少于 8 GB 会适得其反. 2.如果你要在更快的 CPUs 和更多的核心之间选择,选择更多的核心更好.多 ...
- Zookeeper 的典型应用场景?
Zookeeper 是一个典型的发布/订阅模式的分布式数据管理与协调框架,开发人员 可以使用它来进行分布式数据的发布和订阅. 通过对 Zookeeper 中丰富的数据节点进行交叉使用,配合 Watch ...
- redis主从复制与哨兵高可用
redis主从复制 话不多说,直接看案例: 环境准备, 主从规划 主节点:6380 从节点:6381.6382 运行3个redis数据库,达到 1主 2从的配置 #主库 6379.conf port ...
- 学习zabbix(六)
实验环境 实验用2到2台机器,实验所用机器系统环境如下,可以看到2台机器的主机名和IP地址 ? 1 2 3 4 5 6 7 8 9 10 [root@linux-node1 ~]# cat /etc/ ...
- 判断1~n有多少个1
判断1~n有多少个1 例如:1~12中 1 2 3 4 5 6 7 8 9 10 11 12 有1,10,11,12中含有1,则共有5个1: 算法如下: #include<stdio.h> ...
- python中模块制作、发布、安装
模块的发布 需要在当前目录下 模块的安装 真实制作发布一个包 包的制作 (1)将写好的包放在moudelTest目录下 (2)moudelTest目录下创建一个setup.py文件(格式上面有介绍) ...
- 顺利通过EMC实验(15)
- CEPH-4:ceph RadowGW对象存储功能详解
ceph RadosGW对象存储使用详解 一个完整的ceph集群,可以提供块存储.文件系统和对象存储. 本节主要介绍对象存储RadosGw功能如何灵活的使用,集群背景: $ ceph -s clust ...