您的位置 首页 java

java集合框架详解

概述

“集合框架”由一组用来操作对象的接口组成,操作主要以下三种:

  • 添加新的对象
  • 删除对象
  • 查找对象

应用场景:

  • 动态扩充容器的大小
  • 容器支持去掉重复数据
  • 快速按条件查找数据
  • 对数据进行排序

集合框架图

java集合框架详解

集合框架图

集合类对比

java集合框架详解

集合类对比

容器的分类

  • Collection 一组对立的元素,通常这些元素都服从某种规则。List必须保持元素特定的顺序,而Set 不能有重复元素。
  • Map 一组 成对的“键值对”对象。初看起来这似乎应该是一个Collection ,其元素是成对的对象,但是这样的设计实现起来太笨拙了,于是我们将Map明确的提取出来形成一个独立的概念。另一方面,如果使用Collection 表示Map的部分内容,会便于查看此部分内容。因此Map一样容易扩展成多维Map ,无需增加新的概念,只要让Map中的键值对的每个“值”也是一个Map即可。

Collection和Map的区别在于容器中每个位置保存的元素个数。Collection 每个位置只能保存一个元素(对象)。此类容器包括:List ,它以特定的顺序保存一组元素;Set 则是元素不能重复。

Map保存的是“键值对”,就像一个小型数据库。我们可以通过“键”找到该键对应的“值”。

Collection – 对象之间没有指定的顺序,允许重复元素。

Set – 对象之间没有指定的顺序,不允许重复元素

List– 对象之间有指定的顺序,允许重复元素,并引入位置下标。

Map – 接口用于保存关键字(Key)和数值(Value)的集合,集合中的每个对象加入时都提供数值和关键字。 Map 接口 既不继承 Set 也不继承 Collection。

Collection 接口 用于表示任何对象或元素组。想要尽可能以常规方式处理一组元素时,就使用这一接口。它是 List和Set 的父类。并且它本身也是一个接口。它定义了作为集合所应该拥有的一些方法。

Collection接口

Collection接口 支持如添加和除去等基本操作。

boolean add(Object element)

boolean remove(Object element)

int size()

boolean isEmpty()

boolean contains(Object element)

iterator iterator()

boolean containsAll(Collection collection)

boolean addAll(Collection collection)

void clear()

void removeAll(Collection collection)

void retainAll(Collection collection)

containsAll()

方法允许您查找当前集合是否包含了另一个集合的所有元素,即另一个集合是否是当前集合的子集。其余方法是可选的,因为特定的集合可能不支持集合更改。 addAll() 方法确保另一个集合中的所有元素都被添加到当前的集合中,通常称为并。 clear() 方法从当前集合中除去所有元素。 removeAll() 方法类似于 clear() ,但只除去了元素的一个子集。 retainAll() 方法类似于 removeAll() 方法,不过可能感到它所做的与前面正好相反:它从当前集合中除去不属于另一个集合的元素。

List接口

List 就是列表的意思,它是Collection 的一种,即继承了 Collection 接口,以定义一个允许重复项的有序集合。该接口不但能够对列表的一部分进行处理,还添加了面向位置的操作。List 是按对象的进入顺序进行保存对象,而不做排序或编辑操作。它除了拥有Collection接口的所有的方法外还拥有一些其他的方法。

面向位置的操作包括插入某个元素或 Collection 的功能,还包括获取、除去或更改元素的功能。在 List 中搜索元素可以从列表的头部或尾部开始,如果找到元素,还将报告元素所在的位置。

void add(int index, Object element) :添加对象element到位置index上

boolean addAll(int index, Collection collection) :在index位置后添加容器collection中所有 的元素

Object get(int index) :取出下标为index的位置的元素

int indexOf(Object element) :查找对象element 在List中第一次出现的位置

int lastIndexOf(Object element) :查找对象element 在List中最后出现的位置

Object remove(int index) :删除index位置上的元素

Object set(int index, Object element) :将index位置上的对象替换为element 并返回老的 元素。

成员要求 List 提供基于索引的对成员的随机访问 ArrayList 提供快速的基于索引的成员访问,对尾部成员的增加和删除支持较好 成员可为任意Object子类的对象 LinkedList 对列表中任何位置的成员的增加和删除支持较好,但对基于索引的成员访问支持性能较差 成员可为任意Object子类的对象 在“集合框架”中有两种常规的 List 实现:ArrayList 和 LinkedList。使用两种 List 实现的哪一种取决于您特定的需要。如果要支持随机访问,而不必在除尾部的任何位置插入或除去元素,那么,ArrayList 提供了可选的集合。但如果,您要频繁的从列表的中间位置添加和除去元素,而只要顺序的访问列表元素,那么,LinkedList 实现更好

java集合框架详解

ArrayList 和LinkedList对比

Map 接口

改变操作允许您从映射中添加和除去键-值对。键和值都可以为 null。但是,您不能把 Map 作为一个键或值添加给自身。

Object put(Object key,Object value):用来存放一个键-值对Map中

Object remove(Object key):根据key(键),移除一个键-值对,并将值返回

void putAll(Map mapping) :将另外一个Map中的元素存入当前的Map中

void clear() :清空当前Map中的元素

查询操作允许您检查映射内容:

Object get(Object key) :根据key(键)取得对应的值

boolean containsKey(Object key) :判断Map中是否存在某键(key)

boolean containsValue(Object value):判断Map中是否存在某值(value)

int size():返回Map中 键-值对的个数

boolean isEmpty() :判断当前Map是否为空

最后一组方法允许您把键或值的组作为集合来处理。

public Set keySet() :返回所有的键(key),并使用Set容器存放

public Collection values() :返回所有的值(Value),并使用Collection存放

public Set entrySet() :返回一个实现 Map.Entry 接口的元素 Set

因为映射中键的集合必须是唯一的,就使用 Set 来支持。因为映射中值的集合可能不唯一,就使用 Collection 来支持。最后一个方法返回一个实现 Map.Entry 接口的元素 Set

java集合框架详解

HashMap,TreeMap,LinkedHashMap对比

Set 接口

Set 接口继承 Collection 接口,而且它不允许集合中存在重复项。

public int size() :返回set中元素的数目,如果set包含的元素数大于 Integer .MAX_VALUE,返回 Integer.MAX_VALUE

public boolean isEmpty() :如果set中不含元素,返回true

public boolean contains(Object o) :如果set包含指定元素,返回true

public Iterator iterator() 返回set中元素的迭代器

元素返回没有特定的顺序,除非set是提高了该保证的某些类的实例

public Object[] toArray () :返回包含set中所有元素的数组

public Object[] toArray(Object[] a) :返回包含set中所有元素的数组,返回数组的运行时 类型是指定数组的运行时类型

public boolean add(Object o) :如果set中不存在指定元素,则向set加入

public boolean remove(Object o) :如果set中存在指定元素,则从set中删除

public boolean removeAll(Collection c) :如果set包含指定集合,则从set中删除指定集合 的所有元素

public boolean containsAll(Collection c) :如果set包含指定集合的所有元素,返回true。 如果指定集合也是一个set,只有是当前set的子集时,方法返回true

public boolean addAll(Collection c) :如果set中中不存在指定集合的元素,则向set中加入 所有元素

public boolean retainAll(Collection c) :只保留set中所含的指定集合的元素(可选操作)。换言之,从set中删除所有指定集合不包含的元素。 如果指定集合也是一个set,那么该操作修改set的效果是使它的值为两个set的交集

public boolean removeAll(Collection c) :如果set包含指定集合,则从set中删除指定集合的所有元素

public void clear() :从set中删除所有元素

HashSet,TreeSte,LinkedHashSet对比

文章来源:智云一二三科技

文章标题:java集合框架详解

文章地址:https://www.zhihuclub.com/193020.shtml

关于作者: 智云科技

热门文章

网站地图