IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 数据结构与算法 -> Java集合框架 -> 正文阅读

[数据结构与算法]Java集合框架

目录

什么是集合框架

collection接口

?Map接口


?

什么是集合框架

Java 集合框架 Java Collection Framework ,又被称为容器 container ,是定义在 java.util 包下的一组接口 interfaces 和其实现类 classes

其主要表现为将多个元素 element 置于一个单元中,用于对这些元素进行快速、便捷的存储 store 、检索 retrieve 、管理 manipulate ,即平时我们俗称的增删查改 CRUD

简单来说,集合框架就是由接口,抽象类,实现类组成的,这些类和接口里面实现了数据结构。

集合框架图大致如下:

我们知道接口其实就是对一个行为的抽象,也相当于一个标准,因为大多数类都有这种特性于是将其抽象成了一个接口。

我们从上往下看,Iterable是一个增强for-each循环的接口,实现这个接口的类都能使用for-each循环进行遍历。而我们看到Map并没有实现Iterable接口,因此Map下的类都不能使用for-each循环。

至于Collection接口,其实就是用来管理元素的,而这些元素就是实现它的类。

List是一个线性表,包括数组和链表,Queue是一个队列,set是一个集合,里面的元素不能重复。

?其中ArrayList底层是一个顺序表,LinkList底层是一个双向链表,能表示一个双向链表、普通队列和双端队列(队头队尾都能进出元素)。stack是一个栈,priorityQueue是一个优先队列,底层是一个二叉树。Treeset底层是一个红黑树,hashset底层是一个哈希表。hashmap底层也是一个哈希表,treeMap底层也是一个红黑树。(现在只是大致了解,后续博文会详细介绍)。

Map是一个键值对,也就数所谓的<Key,Value>结构,能够存储k值和v值,而左半部分collection下的只能存储k值。

集合框架中不止这些数据结构,还提供了一些工具,例如迭代器、比较器等;

collection接口

collection官方文档

前面介绍了collection下面的一些类,那现在来使用一下collection熟练熟练。

因为大多数类都实现了collection接口,因此我们可以实现向下转型,就用ArrayList吧。对此不理解的可以戳这:多态中的向下转型

        Collection<Integer>coll = new ArrayList<>();
        coll.add(1);
        coll.add(2);
        coll.add(3);
        coll.add(4);
        System.out.println(coll);
        boolean ret1 = coll.contains(2);
        System.out.println(ret1);
        boolean flg1 = coll.isEmpty();
        System.out.println(flg1);
        boolean flg2 = coll.remove(2);
        System.out.println(flg2);
        System.out.println(coll.remove(2));
        boolean ret2 = coll.contains(2);
        System.out.println(ret2);
        int size = coll.size();
        System.out.println(size);
        coll.clear();
        System.out.println(coll.isEmpty());

关于尖括号中的Integer类型是属于泛型,不了解的也可以戳这:泛型

运行结果如下:

?Map接口

Map官方文档

关于Map,其实相当于一个字典,首先是创建一个字典把一个key值和一个value值存进去。

然后就可以按照key值从字典中寻找对应的value值。

?示例代码:

        Map<String,String>map = new Hashtable<>();
        map.put("三国演义","罗贯中");
        map.put("红楼梦","曹雪芹");
        map.put("西游记","吴承恩");
        map.put("水浒传","施耐庵");
        System.out.println(map);
        map.put("Java","bit");
        //如果字典中已经存在了key值,则返回对应的value值,如若没有,返回设置的默认值
        String str1 = map.getOrDefault("Java","Bit");
        System.out.println(str1);

        System.out.println(map.remove("Java"));
        String str2 =  map.getOrDefault("Java","Bit");
        System.out.println(str2);

        System.out.println(map.containsKey("三国演义"));

        System.out.println(map.containsValue("罗贯中"));

        System.out.println(map.isEmpty());

        System.out.println(map.size());

?结果如下:

我们注意到插入的顺序与输出的顺序并不是相同的,这就得从哈希表的函数说起,因为一个k-v键值对值 存入map中会经过哈希函数的加工最后才存进哈希表中,因此顺序并不会相同。

示例:

entryset方法:

我们观察entrySet方法的返回值是一个Set<Map.Entry<K, V>> ,这个我们先不管,之后在将哈希表时再详细介绍,现在先学会使用:

        Set<Map.Entry<String, String>>entry = map.entrySet();

        //entry接收了map里的k-v键值对并存储在一个set集合里
        //因此我们可以使用for-each循环
        // 使用一个Map.Entry<String, String>类型的entry1 
        // 接收set集合里的所有Map.Entry<String, String>类型元素

        for (Map.Entry<String, String> entry1: entry) {
            System.out.println(entry1);
        }

结果:

?

本文收录专栏《数据结构》。

  数据结构与算法 最新文章
【力扣106】 从中序与后续遍历序列构造二叉
leetcode 322 零钱兑换
哈希的应用:海量数据处理
动态规划|最短Hamilton路径
华为机试_HJ41 称砝码【中等】【menset】【
【C与数据结构】——寒假提高每日练习Day1
基础算法——堆排序
2023王道数据结构线性表--单链表课后习题部
LeetCode 之 反转链表的一部分
【题解】lintcode必刷50题<有效的括号序列
上一篇文章      下一篇文章      查看所有文章
加:2022-02-07 13:58:02  更:2022-02-07 13:58:31 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 18:40:13-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码