Java之类集框架

1.Java类集框架的继承关系

Java之类集框架_第1张图片

2.Collection接口

(1)集合类型
单值集合
(2)Collection接口的核心方法

  • boolean add(E e): 添加一个元素到集合中。如果成功,返回true;如果失败(因为集合已经包含此元素或有其他并发修改),返回false
  • E get(Object o): 返回此集合中与指定对象相等的元素。如果此集合中没有这样的元素,则返回null
  • Iterator iterator(): 返回一个迭代器,该迭代器可以遍历此集合中的元素
  • int size(): 返回此集合中元素的数量
  • boolean contains(Object o): 如果此集合包含指定元素,则返回true;否则返回false
  • boolean remove(Object o): 从此集合中移除指定元素(如果存在)。如果成功,返回true;如果失败,返回false
  • void clear(): 移除此集合中的所有元素
  • boolean equals(Object o): 比较此集合与指定的对象是否相等
  • int hashCode(): 返回此集合的哈希码值。

3.Map接口

(1)集合类型
K-V对集合(注:K值不能重复,且每个K值只能映射一个V值)
(2)Map接口的核心方法

  • Object put(Object key,Object value)
    将指定键值对(key 和 value)添加到 Map 集合中,如果此 Map 集合以前包含一个该键 key 的键值对,则用参数 key 和 value 替换旧值。
  • Object get(Object key)
    返回指定键 key 所对应的值,如果此 Map 集合中不包含该键 key,则返回 null。
  • Object remove(Object key)
    如果存在指定键 key 的键值对,则将该键值对从此 Map 集合中移除。
  • Set keySet()
    返回此 Map 集合中包含的键的 Set 集合。在上面的程序最后添加下面的语句:System.out. println(domains.keySet());,则会输出[com, edu, org, net]。
  • Collection values()
    返回此 Map 集合中包含的值的 Collection 集合。在上面的程序最后添加下面的语句:System.out.println(domains.values());,则会输出[工商企业,教研机构,非营利组织,网络服务商]。
  • boolean containsKey(Object key)
    如果此 Map 集合包含指定键 key 的键值对,则返回 true。
  • boolean containsValue(Object key)
    如果此 Map 集合将一个或多个键 key 对应到指定值,则返回 true。
  • int size()
    返回此 Map 集合的键值对的个数。

4.List接口和Set接口

(1)List接口
List 实例是一个可重复,有序的元素集合。程序员可对 List 中每个元素的位置进行精确控制,可以根据索引来访问元素

(2)List接口的核心方法

  • void add(int index,Object o)
    在集合的指定 index 位置处,插入指定的 o 元素。
  • Object get(int index)
    返回集合中 index 位置的数据元素。
  • int indexOf(Object o)
    返回此集合中第一次出现的指定 o 元素的索引,如果此集合不包含 o 元素,则返回-1。
  • int lastIndexOf(Object o)
    返回此集合中最后出现的指定 o 元素的索引,如果此集合不包含 o 元素,则返回-1。
  • Object remove(int index)
    移除集合中 index 位置的数据元素。
  • Object set(int index,Object o)
    用指定的 o 元素替换集合中 index 位置的数据元素。

(3)Set接口
Set 实例用于存储一个不重复,无序的元素集合(这里的“无序”是指向 Set 中输入的元素,与从 Set 中输出元素的顺序是不一致的)

5.ArrayList类和LinkedList类的比较

(1)内部实现
ArrayList是基于动态数组实现的,因此它在内存中的存储是连续的。LinkedList是基于双向链表实现的,元素之间通过链接相互关联

(2)性能

  • 访问元素:由于ArrayList是基于数组实现的,因此访问元素时速度更快。而LinkedList需要通过链表进行遍历来访问元素,速度相对较慢
  • 插入和删除元素:在列表的前部或尾部插入或删除元素时,LinkedList通常更快,因为它的节点是相互连接的,可以直接进行操作。但是在列表的中间插入或删除元素时,ArrayList的速度更快
  • 内存空间:通常情况下,ArrayList比LinkedList使用更多的内存空间,因为LinkedList中的元素是相互连接的

(3)使用场景
需要频繁地访问列表中的元素,那么ArrayList通常是更好的选择。需要频繁地在列表的前部或尾部插入或删除元素,那么LinkedList通常是更好的选择

6.HashSet类和TreeSet类的比较

(1)内部实现
HashSet是基于哈希表实现的,它利用哈希码来存储元素,因此具有非常快的查找速度。TreeSet:TreeSet是基于红黑树(一种自平衡的二叉查找树)实现的,它通过元素的自然顺序(如数字的升序)或提供的Comparator来组织元素,因此具有较好的排序性能。

(2)性能

  • 访问元素:由于HashSet是基于哈希表实现的,因此访问元素的速度非常快,通常比TreeSet快
  • 插入和删除元素:在插入和删除元素方面,TreeSet通常比HashSet慢,因为TreeSet需要维护其内部结构的平衡
  • 内存空间:通常情况下,TreeSet使用的内存空间比HashSet多,因为它需要存储额外的内部结构信息。

(3)使用场景
需要快速查找元素,并且对元素的顺序没有要求,那么HashSet通常是更好的选择。需要元素有序,并且在插入、删除元素时不需要考虑性能问题,那么TreeSet通常是更好的选择。

7.HashMap类和TreeMap类的比较

(1)内部实现
HashMap是基于哈希表实现的,它使用哈希码来存储键值对,并使用链表或红黑树来处理哈希冲突。这使得HashMap在处理大量的数据时具有很高的查询效率。TreeMap是基于红黑树(一种自平衡的二叉查找树)实现的,它通过比较键来组织元素,并保持键的排序。这使得TreeMap在处理有序的键值对时非常有效

(2)性能

  • 查询效率:在查询操作中,HashMap通常比TreeMap快,因为HashMap使用哈希码来直接定位键值对,而TreeMap需要遍历树结构来查找键
  • 插入和删除操作:在插入和删除操作中,TreeMap可能需要更多的时间,因为它需要维护其内部的有序结构。HashMap在这方面的性能通常优于TreeMap

(3)使用场景
需要快速查找特定的键值对,并且对数据的顺序没有要求,那么HashMap通常是更好的选择。需要按键的顺序访问键值对,并且需要保持数据的有序性,那么TreeMap通常是更好的选择

8.LinkedHashMap类

基于链表形式实现K-V对类型的数据存储,即保证集合的存储顺序与数据的增加数据相同(注:LinkedHashMap类中允许保存的key值或value值为null)

你可能感兴趣的:(Java语法,java,开发语言)