Java集合框架【简析】

Java集合的体系框架

Java集合体系框架(Java Collection Framework)是Java编程语言中用于存储和操作数据的一组接口和类的层次结构。它是Java集合框架的核心部分,提供了统一的编程接口和标准化的数据结构。
在这里插入图片描述
Java集合体系框架的结构如下:

  1. 接口(Interfaces):
    (1):Collection:是最基本的集合接口,表示一组对象的集合。它派生了两个子接口:List和Set。
    ·List:有序集合,允许重复元素。常见的实现类有ArrayList、LinkedList和Vector。
    ·Set:无序集合,不允许重复元素。常见的实现类有HashSet、LinkedHashSet和TreeSet。
    (2):Map:键值对的集合。常见的实现类有HashMap、LinkedHashMap和TreeMap。

  2. 类(Classes):
    (1):AbstractCollection:Collection接口的抽象实现类,提供了一些公共的方法实现。
    (2):AbstractList:List接口的抽象实现类,进一步提供了基于索引的操作。
    (3):AbstractSet:Set接口的抽象实现类,进一步提供了不重复元素的操作。
    (4):AbstractMap:Map接口的抽象实现类,提供了一些常用的方法实现。
    (5):ArrayList:List接口的可调整大小的数组实现。
    (6):LinkedList:List接口的双向链表实现。
    (7):HashSet:Set接口的哈希表实现。
    (8):LinkedHashSet:Set接口的链表和哈希表实现,保持插入顺序。
    (9):HashMap:Map接口的哈希表实现。
    (10):LinkedHashMap:Map接口的链表和哈希表实现,保持插入顺序。
    (11):TreeMap:Map接口的红黑树实现,按照键的自然顺序进行排序。
    (12):Vector:List接口的同步实现类,类似于ArrayList但线程安全。
    (13):Hashtable:Map接口的同步实现类,类似于HashMap但线程安全。
    此外,Java集合体系框架还提供了一些工具类,如Collections和Arrays,用于提供集合的实用方法和操作。

Collection集合

Collection派生出了三个子接口:List、Set、Queue(Java5新增的队列),因此Java集合大致也可分成List、Set、Queue、Map四种接口体系,(注意:Map不是Collection的子接口)。
在这里插入图片描述

  1. List接口:
    (1):List接口代表一个有序的集合,其中的元素可以重复。
    (2):元素在List中存储的顺序是有意义的,并且可以通过索引进行访问和操作。
    (3):List接口提供了对元素的插入、访问、更新和删除操作。
    (4):常见的List实现类有ArrayList、LinkedList和Vector。ArrayList是基于动态数组的实现,适合快速的随机访问操作;LinkedList基于链表实现,适合插入和删除操作频繁的场景;Vector是线程安全的动态数组。
  2. Set接口:
    (1):Set接口代表一个无序的集合,其中的元素不可重复。
    (2):Set中的元素没有定义的顺序,并且不支持通过索引访问和操作。
    (3):Set接口通常用于判断元素是否存在于集合中,以及去除重复元素。
    (4):常见的Set实现类有HashSet、LinkedHashSet和TreeSet。HashSet基于哈希表实现,具有较快的查找速度;LinkedHashSet在HashSet的基础上保持了元素的插入顺序;TreeSet基于红黑树实现,可以对元素进行排序。
  3. Queue口:
    (1):Queue接口代表一种队列的数据结构,元素按照先进先出(FIFO)的顺序进行插入和删除。
    (2):常见的Queue实现类有LinkedList、ArrayDeque和PriorityQueue。LinkedList实现了Queue接口,并且支持双向链表结构;ArrayDeque是基于循环数组实现的双端队列;PriorityQueue是基于堆数据结构实现的,可以根据元素的优先级进行排序。

Map集合

Map集合是Java集合框架中的一种键值对(key-value)存储结构。不同于其他集合类型,Map集合中的元素是成对存在的,其中一个元素作为键(key),另一个元素作为值(value),它们之间存在映射关系。
在这里插入图片描述
Map集合的特点

  1. 键是唯一的:每个键在Map中是唯一的,不能重复。与键关联的值可以重复。
  2. 键和值之间是一对一的映射关系:每个键与一个值相关联,通过键可以快速找到对应的值。
  3. 不保留固定的顺序:Map集合通常不保证键值对的顺序,它根据具体的实现类而定。

在Java中,Map集合是通过Map接口来定义的。Map接口提供了一系列用于操作和管理键值对的方法,如添加、获取、删除和遍历等操作。

常见的Map接口的实现类:

  1. HashMap:使用哈希表实现,其插入、访问、删除操作的时间复杂度都是 O(1)。
  2. TreeMap:基于红黑树实现,会根据键的自然顺序或者自定义的比较器对键进行有序存储。
  3. LinkedHashMap:按照插入顺序或访问顺序维护键值对的双向链表,同时由哈希表支持快速的查找。
  4. Hashtable:是一个古老的实现类,线程安全,但性能较低。通常不建议在新代码中使用。
  5. ConcurrentHashMap:线程安全的哈希表实现,具备高并发性能。

以下是一些常用的Map集合操作:

  • put(key, value):将指定的键值对添加到Map集合中。
  • get(key):根据键获取对应的值。
  • containsKey(key):检查Map中是否包含指定的键。
  • containsValue(value):检查Map中是否包含指定的值。
  • remove(key):根据键移除对应的键值对。
  • keySet():返回Map中所有键的集合。
  • values():返回Map中所有值的集合。
  • entrySet():返回Map中所有键值对的集合。

使用HashMap实现Map集合的示例:

import java.util.HashMap;
import java.util.Map;

public class MapExample {
    public static void main(String[] args) {
        // 创建一个HashMap实例
        Map<String, Integer> map = new HashMap<>();

        // 添加键值对
        map.put("apple", 5);
        map.put("banana", 3);
        map.put("orange", 8);

        // 根据键获取值
        int appleCount = map.get("apple");
        System.out.println("Number of apples: " + appleCount);

        // 遍历Map集合
        for (Map.Entry<String, Integer> entry : map.entrySet()) {
            String fruit = entry.getKey();
            int count = entry.getValue();
            System.out.println(fruit + " : " + count);
        }

        // 检查是否包含指定的键
        boolean containsKey = map.containsKey("apple");
        System.out.println("Contains apple: " + containsKey);

        // 移除指定的键值对
        map.remove("banana");

        // 清空Map集合
        map.clear();
    }
}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值