【Java---数据结构】集合框架及背后的数据结构

本文介绍了Java集合框架的基础知识,包括Collection和Map接口的使用。Collection接口下有Set、SortedSet、List、Queue和Deque等子接口,而Map接口则用于存储键值对。通过示例代码展示了如何创建、操作Collection和Map,如添加元素、删除元素、获取元素等。学习集合框架能帮助我们更高效地编写代码并理解数据结构。
摘要由CSDN通过智能技术生成

目录

一、介绍

二、接口

🚀Collection 接口说明

🚀Map接口说明

🚀实现类


一、介绍

官方教程

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

例如,一副扑克牌(一组牌的集合)、一个邮箱(一组邮件的集合)、一个通讯录(一组姓名和电话的映射关系)等等。

  • Collection :用来存储管理一组对象 objects ,这些对象一般被成为元素 elements
  • Set : 元素不能重复,背后隐含着查找/搜索的语义
  • SortedSet : 一组有序的不能重复的元素
  • List : 线性结构
  • Queue : 队列
  • Deque : 双端队列
  • Map : 键值对 Key-Value-Pair ,背后隐含着查找/搜索的语义
  • SortedMap : 一组有序的键值对

Java框架的优点及作用

  • 使用成熟的集合框架,有助于我们便捷、快速的写出高效、稳定的代码
  • 学习背后的数据结构知识,有助于我们理解各个集合的优缺点及使用场景

二、接口

🚀Collection 接口说明

Collection 官方文档

🎄Collection 常用方法说明

🌊Collection 示例

Collection 是一个接口,只能引用它具体的一个实现类。

  • 这里涉及到了泛型的语法,简单介绍一下,具体的使用会在后面的文章中详细介绍。
  • 在类后面写一个尖括号<>,尖括号中指定什么类型,引用的类就存放对应的数据类型。
import java.util.ArrayList;
import java.util.Collection;

public class TestDemo1 {
    public static void main(String[] args) {
        //使用< >指定了某一个数据类型,那么add()方法中只能放对应的数据类型
        //第二个< >中的内容可以省略,但是尖括号不可以省略
        Collection<String> collection = new ArrayList<String>();
        collection.add("hello");
        //< >中只能放引用数据类型,不能放基本数据类型
        //基本数据类型只能放对应的包装类
        Collection<Integer> collection1 = new ArrayList<>();
        collection1.add(2);
    }
}

🌊Collection 常用方法代码示例:

import java.util.ArrayList;
import java.util.Collection;
import java.util.Arrays;

public class TestDemo1 {
    public static void main(String[] args) {
        //只能存放String类型的数据
        Collection<String> list = new ArrayList<>();
        System.out.println(list.size()); //元素个数,当前没有存放元素
        System.out.println(list.isEmpty()); //判断集合是否为空,当前集合为空,返回true
        list.add("我");
        list.add("爱");
        list.add("Java");
        System.out.println(list.size()); //元素个数,3
        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); //打印每一个元素
        }
        list.clear(); //删除集合中所有的元素
        System.out.println(list.size()); //此时集合中没有元素
        System.out.println(list.isEmpty()); //判断集合是否为空,此时集合为空,返回true
    }
}

//运行结果:
0
true
3
false
[我, 爱, Java]
我
爱
Java
我
Java
0
true

🚀Map接口说明

Map 官方文档

🎄Map常用方法说明

🌊Map代码示例

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

public class TestDemo1 {
    public static void main(String[] args) {
        //k的类型:String v的类型:String
        Map<String, String> map = new HashMap<>();
        System.out.println(map.size()); //元素个数,当前没有存放元素
        System.out.println(map.isEmpty()); //判断集合是否为空,当前为空,返回true
        System.out.println(map.get("作者")); //根据k查找对应的v,找不到就返回默认值,String类型的默认值为null
        System.out.println(map.getOrDefault("作者", "佚名")); //根据k查找对应的v,如果没有k就会返回defaultValue的内容("佚名")
        System.out.println(map.containsKey("作者")); //判断是否包含k,此时没有k("作者")
        System.out.println(map.containsValue("佚名")); //判断是否包含v,此时没有v("佚名")
        map.put("作者", "鲁迅"); //放元素
        map.put("标题", "狂人日记");
        map.put("发表时间", "1918年");
        System.out.println(map.size()); //元素个数
        System.out.println(map.isEmpty()); //判断是否为空
        System.out.println(map.get("作者")); //根据k查找对应的v
        System.out.println(map.getOrDefault("作者", "佚名")); //根据k查找对应的v,如果有k就会返回k对应的v(此时"作者"对应"鲁迅")
        System.out.println(map.containsKey("作者")); //判断是否包含k,此时有k("作者")
        System.out.println(map.containsValue("佚名")); //判断是否包含v,此时没有v("佚名")
        for (Map.Entry<String, String> entry : map.entrySet()) {
            System.out.println(entry.getKey()); //返回所有的键值对
            System.out.println(entry.getValue());
        }
    }
}

//运行结果:
0
true
null
佚名
false
false
3
false
鲁迅
鲁迅
true
false
作者
鲁迅
发表时间
1918年
标题
狂人日记

🚀实现类

这篇文章只是总结性的介绍了Java中的集合框架,后序会对集合框架中的每个类进行详细的介绍!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

潇湘夜雨.

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值