java之集合框架

简介: java之集合框架

介绍

Collection接口以及其衍生

集合是什么?


简单点来说就是封装好的数据结构

1

来看一张图,需要大家将里面的关系理清楚:

2.png

各个颜色的分类:(分三种)

2.png

三者之间的关系已经箭头的指向都要梳理清楚,如下图所示:


Collection是集合的意思,用于存储"单个"元素,即将单个"元素"挨个一条一条存储,

有三个接口扩展了(extends)了Collection接口,分别是List接口,Queue接口,以及Set接口

实现List接口的实现类一般都是顺序表(ArrayList),链表(LinkedList)

实现Queue接口的实现类有LinkedList以及PriorityQueue

所以说LinkedList既可以被当作链表使用,也可以被当作队列和双向队列使用

实现Set接口的实现类有TreeSet和HashSet.

今后我们需要重点掌握的就是List接口,Queue接口,以及Set接口

List接口:线性结构

Queue接口:队列

Set接口:数学意义上的集合,元素不能重复(重复的元素算一个),背后隐含着查找/搜索的语义

Deque接口:双端队列

SortedSet接口:一组有序的不能重复的元素

2.png


总结:需要重点理清两个点:


1:接口与接口,类与接口的关系

2:每一个具体的实现类到底实现了哪些接口


我们需要重点掌握的接口实现类是:Stack,ArrayList,LinkedList,HashSet,PriorityQueue,TreeSet

Vector很少用了,基本都用Stack代替


Map接口以及其衍生

Map接口与Collection接口不同的是,Map接口用于存储键值对

来看一张图:

Map接口有两个实现类,其中HashMap和TreeMap都是需要重点掌握的

2.png


SortedMap接口:一组有序的键值对


每个接口实现类代表的含义

2.png


总的来说这些接口实现类封装好了我们所知道的数据结构的功能,让我们直接拿来使用即可.


总结

集合有很多,为什么?

答:因为集合背后都是数据结构。

描述和组织数据的方式不一样造就了有这么多的数据结构也就是为什么有这么多的集合。

关于集合的注意事项:


只要是集合,里面存储的元素就一定是引用类型,既然是引用类型,那么比较相等的时候就一定要用equals


学习的意义

java集合框架的优点和作用

使用成熟的集合框架,有助于我们便捷、快速的写出高效、稳定的代码

学习背后的数据结构知识,有助于我们理解各个集合的优缺点及使用场景

往年理解公司的笔试面试题概览

2.png2.png2.png


Collection接口

Collection官方文档(戳我)


常用方法

2.png


Collection示例

import java.util.Collection;
import java.util.ArrayList;
import java.util.Arrays;
public class Demo {
    public static void main(String[] args) {
        Collection<String> list = new ArrayList<>();
        System.out.println(list.size());
        System.out.println(list.isEmpty());
        list.add("我");
        list.add("爱");
        list.add("Java");
        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);
        }
        list.clear();
        System.out.println(list.size());
        System.out.println(list.isEmpty());
    }
}

运行结果:


0
true
3
false
[我, 爱, Java]
Java
Java
0
true


Map接口

Map官方文档(戳我)


Map常用方法

2.png


Map代码示例

import java.util.Map;
import java.util.HashMap;
public class Demo {
    public static void main(String[] args) {
        Map<String, String> map = new HashMap<>();
        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(" 佚 名 "));
        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());
        }
    }
}

运行结果:

0
true 
null 
佚名
false 
false 
3
false 
鲁迅
鲁迅
true 
false 
作者
鲁迅
发表时间
1918年
标题
狂人日记
相关文章
|
19天前
|
JSON Java Apache
非常实用的Http应用框架,杜绝Java Http 接口对接繁琐编程
UniHttp 是一个声明式的 HTTP 接口对接框架,帮助开发者快速对接第三方 HTTP 接口。通过 @HttpApi 注解定义接口,使用 @GetHttpInterface 和 @PostHttpInterface 等注解配置请求方法和参数。支持自定义代理逻辑、全局请求参数、错误处理和连接池配置,提高代码的内聚性和可读性。
|
2月前
|
存储 Java
深入探讨了Java集合框架中的HashSet和TreeSet,解析了两者在元素存储上的无序与有序特性。
【10月更文挑战第16天】本文深入探讨了Java集合框架中的HashSet和TreeSet,解析了两者在元素存储上的无序与有序特性。HashSet基于哈希表实现,添加元素时根据哈希值分布,遍历时顺序不可预测;而TreeSet利用红黑树结构,按自然顺序或自定义顺序存储元素,确保遍历时有序输出。文章还提供了示例代码,帮助读者更好地理解这两种集合类型的使用场景和内部机制。
41 3
|
28天前
|
人工智能 前端开发 Java
基于开源框架Spring AI Alibaba快速构建Java应用
本文旨在帮助开发者快速掌握并应用 Spring AI Alibaba,提升基于 Java 的大模型应用开发效率和安全性。
基于开源框架Spring AI Alibaba快速构建Java应用
|
28天前
|
消息中间件 Java 数据库连接
Java 反射最全详解 ,框架设计必掌握!
本文详细解析Java反射机制,包括反射的概念、用途、实现原理及应用场景。关注【mikechen的互联网架构】,10年+BAT架构经验倾囊相授。
Java 反射最全详解 ,框架设计必掌握!
|
2月前
|
前端开发 Java 数据库连接
Spring 框架:Java 开发者的春天
Spring 框架是一个功能强大的开源框架,主要用于简化 Java 企业级应用的开发,由被称为“Spring 之父”的 Rod Johnson 于 2002 年提出并创立,并由Pivotal团队维护。
58 1
Spring 框架:Java 开发者的春天
|
19天前
|
Java
Java 8 引入的 Streams 功能强大,提供了一种简洁高效的处理数据集合的方式
Java 8 引入的 Streams 功能强大,提供了一种简洁高效的处理数据集合的方式。本文介绍了 Streams 的基本概念和使用方法,包括创建 Streams、中间操作和终端操作,并通过多个案例详细解析了过滤、映射、归并、排序、分组和并行处理等操作,帮助读者更好地理解和掌握这一重要特性。
25 2
|
24天前
|
存储 Java
判断一个元素是否在 Java 中的 Set 集合中
【10月更文挑战第30天】使用`contains()`方法可以方便快捷地判断一个元素是否在Java中的`Set`集合中,但对于自定义对象,需要注意重写`equals()`方法以确保正确的判断结果,同时根据具体的性能需求选择合适的`Set`实现类。
|
19天前
|
安全 Java
Java多线程集合类
本文介绍了Java中线程安全的问题及解决方案。通过示例代码展示了使用`CopyOnWriteArrayList`、`CopyOnWriteArraySet`和`ConcurrentHashMap`来解决多线程环境下集合操作的线程安全问题。这些类通过不同的机制确保了线程安全,提高了并发性能。
|
24天前
|
存储 Java 开发者
在 Java 中,如何遍历一个 Set 集合?
【10月更文挑战第30天】开发者可以根据具体的需求和代码风格选择合适的遍历方式。增强for循环简洁直观,适用于大多数简单的遍历场景;迭代器则更加灵活,可在遍历过程中进行更多复杂的操作;而Lambda表达式和`forEach`方法则提供了一种更简洁的函数式编程风格的遍历方式。
|
24天前
|
Java 开发者