一、集合框架

集合框架是一个用来代表和操纵集合的统一架构。所有的集合框架都包含如下内容:

  • 接口:是代表集合的抽象数据类型。接口允许集合独立操纵其代表的细节。在面向对象的语言,接口通常形成一个层次。
  • 实现(类):是集合接口的具体实现。从本质上讲,它们是可重复使用的数据结构。
  • 算法:是实现集合接口的对象里的方法执行的一些有用的计算,例如:搜索和排序。这些算法被称为多态,那是因为相同的方法可以在相似的接口上有着不同的实现。

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】的更多相关文章

  1. Java学习----集合框架总结

    集合框架总结: Collection接口: Set接口: HashSet//对象必须实现hashCode方法,元素没有顺序呢,效率比LinkedHashSet高 LinkedHashSet//是Has ...

  2. java学习——集合框架(Collection,List,Set)

    集合类的由来: 对象用于封装特有数据,对象多了需要存储,如果对象的个数不确定,就使用集合容器进行存储. 集合特点:1,用于存储对象的容器.2,集合的长度是可变的.3,集合中不可以存储基本数据类型值. ...

  3. 【转】Java学习---集合框架那些事

    [原文]https://www.toutiao.com/i6593220692525711885/ Arraylist 与 LinkedList 异同 1. 是否保证线程安全: ArrayList 和 ...

  4. java学习——集合框架(泛型,Map)

    泛型: ... Map:一次添加一对元素.Collection 一次添加一个元素. Map也称为双列集合,Collection集合称为单列集合. 其实map集合中存储的就是键值对. map集合中必须保 ...

  5. java的集合框架最全详解

    java的集合框架最全详解(图) 前言:数据结构对程序设计有着深远的影响,在面向过程的C语言中,数据库结构用struct来描述,而在面向对象的编程中,数据结构是用类来描述的,并且包含有对该数据结构操作 ...

  6. java.util 集合框架集合

    java的集合框架为程序提供了一种处理对象组的标准方式.设计了一系列标准泛型接口: ⑴Collection ()接口,扩展了Iterable接口,位于集合层次结构的顶部,因此所有的集合都实现Colle ...

  7. Java基础——集合框架

    Java的集合框架是Java中很重要的一环,Java平台提供了一个全新的集合框架.“集合框架”主要由一组用来操作对象的接口组成.不同接口描述一组不同数据类型.Java平台的完整集合框架如下图所示: 上 ...

  8. java的集合框架之一

    java是一套很成熟的东西,很多商用的东西都喜欢用它,用的人多,稳定.不过一般也不怎么说起它,因为太常见了,私下里说,写java应用层得就像农民工,每一处都是搭积木,根据设计师的东西如何优雅地搭好积木 ...

  9. 浅谈Java的集合框架

    浅谈Java的集合框架 一.    初识集合 重所周知,Java有四大集合框架群,Set.List.Queue和Map.四种集合的关注点不同,Set 关注事物的唯一性,List 关注事物的索引列表,Q ...

随机推荐

  1. GCC编译器原理(三)------编译原理三:编译过程(3)---编译之汇编以及静态链接【2】

    4.1.2 符号解析与重定位 (1)重定位 在完成空间和地址的分配步骤之后,链接器就进入了符号解析和重定位的步骤,这是静态链接的核心部分. 先看看 a.o 的反汇编文件: objdump -d a.o ...

  2. 20155324 2016-2017-2 《Java程序设计》第8周学习总结

    20155324 2016-2017-2 <Java程序设计>第8周学习总结 教材学习内容总结 通用API -** 日志API** 1.~java.util.logging~包提供了日志功 ...

  3. RNN

    在DNN中,当前输出层的值只和当前输入值有关系.如果当前输出值不仅依赖当前输入值,也依赖于前面时刻的输入值,那么DNN就不适用了.因此也就有了RNN. 一.RNN结构 这是最简单的RNN.其中Xt是t ...

  4. remove() 方法

    jQuery的 remove() 方法,去掉选中元素. 例如: $("button").click(function(){ $("p").remove(); } ...

  5. 1.2 认识python(了解)

    一.Python发展背景 Python的作者,Guido von Rossum(吉多·范·罗苏姆,中国Python程序员都叫他 龟叔),荷兰人.1982年,龟叔从阿姆斯特丹大学获得了数学和计算机硕士学 ...

  6. c2d遮罩

    ClippingNode 节点 ClippingNode setStencil 设置模版  只有模版的区域显示此节点内容 使用了Opengl的 模板测试  http://www.cnblogs.com ...

  7. mkyaffs2image 生成不了120M的镜像文件的解决方法

    下载链接:   http://download.csdn.net/download/macrocrazier/3807761 用上述下载的链接会出现Failed to execute /linuxrc ...

  8. C - Kite URAL - 1963 (几何+四边形判断对称轴)

    题目链接:https://cn.vjudge.net/problem/URAL-1963 题目大意:给你一个四边形的n个点,让你判断对称点的个数(对称轴的个数*2). 具体思路:感谢qyn的讲解,具体 ...

  9. MyBatis学习七:spring和MyBatis整合

    <\mybatis\day02\16mybatis和spring整合-sqlSessionFactory配置.avi;> MyBatis学习七:spring和MyBatis整合.逆向工程 ...

  10. Javascript - ExtJs - GridPanel组件 - 编辑

    GridPanel组件 - 编辑 Ext.grid.plugin.Editing 如果要对表格使用列编辑器控件,则需要完成以下几步 1.将columns中需要编辑的列设为editor并提供编辑列时所要 ...