Java学习——集合框架【4】
一、集合框架
集合框架是一个用来代表和操纵集合的统一架构。所有的集合框架都包含如下内容:
- 接口:是代表集合的抽象数据类型。接口允许集合独立操纵其代表的细节。在面向对象的语言,接口通常形成一个层次。
- 实现(类):是集合接口的具体实现。从本质上讲,它们是可重复使用的数据结构。
- 算法:是实现集合接口的对象里的方法执行的一些有用的计算,例如:搜索和排序。这些算法被称为多态,那是因为相同的方法可以在相似的接口上有着不同的实现。
Java 集合框架提供了一套性能优良,使用方便的接口和类,java集合框架位于java.util包中, 所以当使用集合框架的时候需要进行导包。
二、Collection方法
public interface Collection<E>extends Iterable<E>
| 返回值 | 方法 | 说明 |
| boolean | add(E e) | 向此 collection 添加指定的元素 |
| boolean | addAll(Collection<? extends E> c) | 将指定 collection 中的所有元素都添加到此 collection 中 |
| boolean | remove(Object o) | 从此 collection 中移除指定元素的单个实例,如果存在的话 |
| boolean | removeAll(Collection<?> c) | 移除此 collection 中那些也包含在指定 collection 中的所有元素 |
| void | clear() | 移除此 collection 中的所有元素 |
| boolean | retainAll(Collection<?> c) | 仅保留此 collection 中那些也包含在指定 collection 的元素 |
| boolean | contains(Object o) | 如果此 collection 包含指定的元素,则返回 true |
| boolean | containsAll(Collection<?> c) | 如果此 collection 包含指定 collection 中的所有元素,则返回 true |
| boolean | isEmpty() | 如果此 collection 不包含元素,则返回 true |
| int | size() | 返回此 collection 中的元素数 |
| boolean | equals(Object o) | 比较此 collection 与指定对象是否相等 |
| int | hashCode() | 返回此 collection 的哈希码值 |
| Iterator<E> | iterator() | 返回在此 collection 的元素上进行迭代的迭代器 |
| Object[] | toArray() | 返回包含此 collection 中所有元素的数组 |
三、Set和List
public interface Set<E>extends Collection<E>
public interface List<E>extends Collection<E>
List实现类
类 |
ArrayList | Vector | LinkedList |
| 底层实现 | 数组 | 数组 | 链表 |
| 线程 | 不安全 | 安全 | 不安全 |
Set实现类
| 类 | HashSet | LinkedHashSet | TreeSet |
| 底层实现 | 哈希表 | 链表+哈希表 | 红黑树 |
| 有序性 | - |
链表 |
1. 自然排序(元素具备比较性): 元素所属类实现Comparable接口 2. 比较器排序(集合具备比较性): 让集合接收一个Comparator的实现类对象 |
| 唯一性 | hashCode()+equals() |
哈希表 |
比较的返回值是否为0 |
| 其它 | 实现了接口SortedSet(提供关于元素的总体排序的Set) |
Set和List比较
| 接口 | Set | List |
| 顺序 | 无序 | 有序 |
| 重复 | 不重复 | 可重复 |
| 访问效率 | 低 | 高 |
| 删除,插入效率 | 高(位置不变) | 低(位置改变) |
| 实现类 | HashSet, LinkedHashSet, TreeSet | ArrayList, Vector, LinkedList |
四、Map<K, V>
public interface Map<K,V>
public static interface Map.Entry<K,V> 映射项(键-值对)
将键映射到值的对象。一个映射不能包含重复的键;每个键最多只能映射到一个值。
此接口取代 Dictionary 类,后者完全是一个抽象类,而不是一个接口。
Map方法
| 返回值 | 方法 | 说明 |
| V | put(K key, V value) | 将指定的值与此映射中的指定键关联 |
| void | putAll(Map<? extends K, ? extends V> m) | 从指定映射中将所有映射关系复制到此映射中 |
| V | remove(Object key) | 如果存在一个键的映射关系,则将其从此映射中移除 |
| void | clear() | 从此映射中移除所有映射关系 |
| boolean | containsKey(Object key) | 如果此映射包含指定键的映射关系,则返回 true |
| boolean | containsValue(Object value) | 如果此映射包含一个或多个键映射到指定值,则返回 true |
| Set<Map.Entry<K,V>> | entrySet() | 返回此映射中包含的映射关系的 Set 视图 |
| Set<K> | keySet() | 返回此映射中包含的键的 Set 视图 |
| Collection<V> | values() | 返回此映射中包含的值的 Collection 视图 |
| V | get(Object key) | 返回指定键所映射的值;如果此映射不包含该键的映射关系,则返回 null |
| boolean | isEmpty() | 如果此映射未包含键-值映射关系,则返回 true |
| int | size() | 返回此映射中的键-值映射关系数 |
| boolean | equals(Object o) | 比较指定的对象与此映射是否相等 |
| int | hashCode() | 返回此映射的哈希码值 |
Map的实现类
| 类 | HashMap | LinkedHashMap | HashTable | TreeMap |
| 底层实现 | 哈希表 | 链表+哈希表 | 哈希表 | 红黑树 |
| 唯一性 |
hashCode() +equals() |
哈希表 |
hashCode() +equals() |
比较的返回值是否为0 |
| 顺序 | 链表 |
1. 自然排序(元素具备比较性): 元素所属类实现Comparable接口 2. 比较器排序(集合具备比较性): 让集合接收一个Comparator的实现类对象 |
||
| 其它 | 线程不安全,效率高 | 线程安全,效率低 |
实现了接口SortedMap (提供关于元素的总体排序的Map) |
Java学习——集合框架【4】的更多相关文章
- Java学习----集合框架总结
集合框架总结: Collection接口: Set接口: HashSet//对象必须实现hashCode方法,元素没有顺序呢,效率比LinkedHashSet高 LinkedHashSet//是Has ...
- java学习——集合框架(Collection,List,Set)
集合类的由来: 对象用于封装特有数据,对象多了需要存储,如果对象的个数不确定,就使用集合容器进行存储. 集合特点:1,用于存储对象的容器.2,集合的长度是可变的.3,集合中不可以存储基本数据类型值. ...
- 【转】Java学习---集合框架那些事
[原文]https://www.toutiao.com/i6593220692525711885/ Arraylist 与 LinkedList 异同 1. 是否保证线程安全: ArrayList 和 ...
- java学习——集合框架(泛型,Map)
泛型: ... Map:一次添加一对元素.Collection 一次添加一个元素. Map也称为双列集合,Collection集合称为单列集合. 其实map集合中存储的就是键值对. map集合中必须保 ...
- java的集合框架最全详解
java的集合框架最全详解(图) 前言:数据结构对程序设计有着深远的影响,在面向过程的C语言中,数据库结构用struct来描述,而在面向对象的编程中,数据结构是用类来描述的,并且包含有对该数据结构操作 ...
- java.util 集合框架集合
java的集合框架为程序提供了一种处理对象组的标准方式.设计了一系列标准泛型接口: ⑴Collection ()接口,扩展了Iterable接口,位于集合层次结构的顶部,因此所有的集合都实现Colle ...
- Java基础——集合框架
Java的集合框架是Java中很重要的一环,Java平台提供了一个全新的集合框架.“集合框架”主要由一组用来操作对象的接口组成.不同接口描述一组不同数据类型.Java平台的完整集合框架如下图所示: 上 ...
- java的集合框架之一
java是一套很成熟的东西,很多商用的东西都喜欢用它,用的人多,稳定.不过一般也不怎么说起它,因为太常见了,私下里说,写java应用层得就像农民工,每一处都是搭积木,根据设计师的东西如何优雅地搭好积木 ...
- 浅谈Java的集合框架
浅谈Java的集合框架 一. 初识集合 重所周知,Java有四大集合框架群,Set.List.Queue和Map.四种集合的关注点不同,Set 关注事物的唯一性,List 关注事物的索引列表,Q ...
随机推荐
- MFC中psz_data无法读取内存的错误
1.项目 ->属性->C/C++ -->预编译头文件,改为“不适用预编译头” 出现ATL::CSimplestring错误,psz_data无法读取内存 2.修改如下:鼠标右击 项目 ...
- oracle 重建索引以及导出所有的索引脚本(可以解决还原数据库文件时先还原数据,在重新用脚本创建索引)
导出数据库备份文件 1. 备份服务器数据,采用并行方式,加快备份速度(文件日期根据具体操作日期修改) expdp jhpt/XXXX directory=databackup dumpfile=dpf ...
- Jvm 性能检测
一.Jmap 1.查看整个LVM 内存状态jmap -heap pid 2.查看JVM堆中对象详细占用情况jmap -histo [pid] 3.导出整个JVM 中内存信息jmap -dump:fo ...
- vue-axios
vue axios全攻略 不再继续维护vue-resource,并推荐大家使用 axios 开始,axios 被越来越多的人所了解.本来想在网上找找详细攻略,突然发现,axios 的官方文档本身就 ...
- mysql 开源 ~ canal+otter系列(1)
一 简介: 今天咱们来聊聊 canal和otter的组合搭配吧二 概念统计 1. 基于Canal开源产品,获取数据库增量日志数据. 2. 典型管理系统架构,manager(web管理)+nod ...
- zabbix系列~ 监控模式
一 简介:讲讲监控相关的东西 二 监控模式 Active(主动式)agent —>常用 在Active agent模式下,Zabbix agent启动后,由agent端初始化和Zabbix ...
- 执行maven install跳过执行maven test方法(网上搜的记录一下,方面以后使用)
直接在pom文件加上这段配置就可以了 <plugin> <groupId>org.apache.maven.plugins</groupId> ...
- Maven入门项目创建
项目构建 1.新建maven项目 2.跳过骨架选择,如果不跳过骨架选择创建出的项目目录是不全的(骨架其实就是项目的模板) 3.Group Id,Artifact Id,Version称为项目的坐标,当 ...
- Springboot的日志管理&Springboot整合Junit测试&Springboot中AOP的使用
==============Springboot的日志管理============= springboot无需引入日志的包,springboot默认已经依赖了slf4j.logback.log4j等日 ...
- vim设置行号
vim打开文件后在底行模式下输入:set nu可以在文件每行开头显示对应的行数: 若想vim打开文件默认显示行数,执行:vim /etc/vimrc,在打开的文件末尾添上:set nu,保存退出即可!