Lambda,集合,数据结构

1.Lambda表达式

  • 是jdk8开始后的一种新语法形式
  • 作用:简化匿名内部类的代码写法

在这里插入图片描述
注意:只能简化函数式接口1的匿名内部类的写法形式

注意:在这里插入图片描述

[省略规则].

  • 1.参数类型可以省略不写
  • 2.如果只有一个参数,参数类型可以省略,同时()也可以省略
  • 3.如果lambda表达式的方法体只有一行,大括号,分号,return可以省略不写,需要同时省略

2.集合

(1).概述

[特点].
在这里插入图片描述

(2).集合体系结构

在这里插入图片描述

(3).单列集合及补充知识

1.顶层接口Collection

[单列集合].
红色是接口,蓝色是实现类
在这里插入图片描述

  • List系列集合:添加的元素是有序,可重复,有索引
  • Set系列集合:添加的元素是无序,不重复,无索引(LinkedHashSet有序,TreeSet按照大小默认升序排序)
    [Collection].
    Collection是单列集合的祖宗接口,它的功能是全部单列集合都可以继承使用的
[1].常用方法

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

[2].遍历方式

|1|.迭代器遍历
迭代器在Java中的类是Iterator,迭代器是集合专用的遍历方式
在这里插入图片描述
在这里插入图片描述
[实例].
在这里插入图片描述
[注意事项].

  • 1.如果当前位置没有元素,但还要获取,会报错NoSuchElementException
  • 2.迭代器遍历完毕,指针不会复位
  • 3.循环中只能用一次next方法
  • 4.迭代器遍历时,不能用集合的方法进行增加或者删除(如果想删,使用迭代器的remove方法)

|2|.增强for遍历
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

|3|.Lambda表达式遍历
在这里插入图片描述
在这里插入图片描述

2.List集合

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3.数据结构

在这里插入图片描述

在这里插入图片描述
|1|栈
在这里插入图片描述
|2|队列
在这里插入图片描述
|3|数组
在这里插入图片描述
|4|.链表
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
先判断第n个元素离首近还是离尾近,然后从首或尾进
链表查询慢,但首尾操作极快
|5|树
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

二叉查找树
在这里插入图片描述
二叉平衡树
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

红黑树
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

4.LinkedList集合

在这里插入图片描述

在这里插入图片描述

5.泛型

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

6.Set系列集合

在这里插入图片描述

7.HashSet

HashSet无序的底层原理:哈希表
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
去重复原理
在这里插入图片描述

8.LinkedHashSet

在这里插入图片描述

9.TreeSet

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

10.可变参数

在这里插入图片描述

在这里插入图片描述

11.集合工具类Collections

在这里插入图片描述

在这里插入图片描述

(4).双列集合及补充知识

1.Map集合

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
常用API
在这里插入图片描述
遍历方法
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

2.HashMap

在这里插入图片描述

在这里插入图片描述

3.LinkedHashMap

在这里插入图片描述

4.TreeMap

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3.小结

进度太慢了,疯狂赶进度(大哭)


  1. 函数式接口:
    (1).首先必须是接口,其次接口中有且仅有一个抽象方法的形式
    (2).通常我们会在接口上加上一个@FunctionalInterface注解,标记该接口必须是满足函数式接口
    ↩︎

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
数据结构地铁建设问题是一个经典的最小生成树问题,可以使用Prim算法或Kruskal算法来解决。具体步骤如下: 1.将各个辖区看作图中的节点,将辖区之间的距离看作边的权重,构建一个带权无向图。 2.选择一个起始节点,将其加入到最小生成树中。 3.从与最小生成树相邻的节点中选择一个权重最小的边,将其连接到最小生成树中。 4.重复步骤3,直到所有节点都被加入到最小生成树中。 下面是使用Prim算法解决数据结构地铁建设问题的Python代码: ```python import sys def prim(graph, start): # 初始化距离和父节点 dist = {node: sys.maxsize for node in graph} parent = {node: None for node in graph} dist[start] = 0 # 将所有节点加入到未访问集合中 unvisited = set(graph) while unvisited: # 选择未访问节点中距离最小的节点 current = min(unvisited, key=lambda node: dist[node]) # 从未访问节点中移除当前节点 unvisited.remove(current) # 更新与当前节点相邻节点的距离和父节点 for neighbor, weight in graph[current].items(): if neighbor in unvisited and weight < dist[neighbor]: dist[neighbor] = weight parent[neighbor] = current # 构建最小生成树 mst = {node: {} for node in graph} for node in graph: if parent[node] is not None: mst[node][parent[node]] = graph[node][parent[node]] mst[parent[node]][node] = graph[parent[node]][node] return mst # 示例图 graph = { 'A': {'B': 2, 'C': 3}, 'B': {'A': 2, 'C': 1, 'D': 1}, 'C': {'A': 3, 'B': 1, 'D': 1}, 'D': {'B': 1, 'C': 1} } # 从节点A开始构建最小生成树 mst = prim(graph, 'A') # 输出最小生成树 for node in mst: for neighbor, weight in mst[node].items(): print(f'{node} - {neighbor}: {weight}') ```

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值