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 集合框架 Java Collection Framework ,又被称为容器 container ,是定义在 java.util 包下的一组接口 interfaces 和其实现类 classes 。
  • 将多个元素 element 置于一个单元中,用于对这些元素进行快速、便捷的存储 store 、检索retrieve 、管理 manipulate ,即平时我们俗称的增删查改 CRUD

二、类和接口

在这里插入图片描述

接口:抽象类进一步抽象,只包含抽象方法,字段只包含静态常量。(实现多态、向上转型)
抽象类;包含抽象类方法的类,用abstract修饰。
(接口和抽象类不能实例化。当实例化对象时,不用再一个一个类实例一个一个对象的繁琐操作,只需要这个类或多个类继承或实现了接口,就可以用抽象类或接口向上转型实例某个类的对象了。)
例如:

Collect collect=new ArrayList();

三、泛型

(1) Collection collection=new ArrayList<>( );:将类型参数化了

E:只能是基本数据类型。

(2)作用:实例化对象时指定参数的类型

如:

 Collection<String>list=new ArrayList<>();
        //添加元素
        list.add("我");
        list.add("爱");
        list.add("Ado");

只能添加String类型的数据。

(四)、包装类

(1)八种基本数据类型对应的类

以此来对基本数据类型进行了面向对象。
在这里插入图片描述

装箱:将基本数据类型变成包装类

      Integer a=123;                      (隐式的)
      Integer a=new Integer.valueof(123);(显示的)

拆箱:将包装类变成基本数据类型

    int b=a;                           (隐式的)
    int  b=a.intvalue;                (显示的)

(2)Integer的范围

public static void main(String[] args) {
      Integer a=129;
      Integer b=129;
     System.out.println(a==b);
 }
 输出: false
 

public static void main(String[] args) {
    Integer a=123;
    Integer b=123;
    System.out.println(a==b);
}
输出:true

源码:

 public static Integer valueOf(int i) {
        if (i >= IntegerCache.low && i <= IntegerCache.high)
            return IntegerCache.cache[i + (-IntegerCache.low)];
        return new Integer(i);
    }

在这里插入图片描述

(五)Collection接口的常用

public static void main(String[] args) {
        //泛型
        //通过Collection接口实例化一个ArrayList类对象
        Collection<String>list=new ArrayList<>();
        //计算长度
        System.out.println(list.size());
        //判读是否为空
        System.out.println(list.isEmpty());
        //添加元素
        list.add("我");
        list.add("爱");
        list.add("Ado");
        System.out.println(list.size());
        System.out.println(list.isEmpty());
        //返回装有数组集合的类
        Object[] array=list.toArray();
        System.out.println(Arrays.toString(array));
        //遍历元素
        for (String s:list) {
            System.out.println(s);
        }
        //移除元素
        list.remove("我");
        for (String s:list) {
            System.out.println(s);
        }
        //清空元素D
        list.clear();
        System.out.println(list.size());
        System.out.println(list.isEmpty());
    }

(六)、Map 常用方法说明

 public static void main(String[] args) {
        Map<String,String>map=new HashMap<>();
        //求长度
        System.out.println(map.size());
        //判断是否为空
        System.out.println(map.isEmpty());
        //根据指定的K查找对应的V
        System.out.println(map.get("作者"));
        //根据指定的K查找对应的V,没有找到用默认值代替
        System.out.println(map.getOrDefault("作者","佚名"));
        //判断是否包含key
        System.out.println(map.containsKey("作者"));
        //判断是否包含value
        System.out.println(map.containsValue("佚名"));
        //将指定的k-v放入map中
        map.put("作者","鲁迅");
        map.put("标题","狂人日记");
        map.put("发表时间","1918年");
        System.out.println(map.size());
        System.out.println(map.isEmpty());
        System.out.println(map.get("作者"));
        System.out.println(map.getOrDefault("作者","佚名"));
        System.out.println(map.containsKey("作者"));
        System.out.println(map.containsValue("佚名"));
        //将所有的键对值返回
        for (Map.Entry<String,String>entry:map.entrySet()) {
            System.out.println(entry.getKey());
            System.out.println(entry.getValue());
        }
    }
  数据结构与算法 最新文章
【力扣106】 从中序与后续遍历序列构造二叉
leetcode 322 零钱兑换
哈希的应用:海量数据处理
动态规划|最短Hamilton路径
华为机试_HJ41 称砝码【中等】【menset】【
【C与数据结构】——寒假提高每日练习Day1
基础算法——堆排序
2023王道数据结构线性表--单链表课后习题部
LeetCode 之 反转链表的一部分
【题解】lintcode必刷50题<有效的括号序列
上一篇文章      下一篇文章      查看所有文章
加:2022-04-18 18:07:49  更:2022-04-18 18:08:44 
 
开发: 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 7:28:12-

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