java的集合以及数据结构
2024-10-21 11:53:54
一、集合
1、介绍
- 红色为接口
- 蓝色为实现类
2、三种遍历方式
- 迭代器
- 增强for
- lambda表达式
Integer[] arr = col.toArray(new Integer[col.size()]);
Arrays.sort(arr, (i1, i2) -> i2 - i1);
System.out.println(Arrays.toString(arr));
// 迭代器 这里不允许修改数据,否则报并发错误
Iterator<Integer> it = col.iterator();
while (it.hasNext()){
System.out.println(it.next());
}
// 增强for,注意 这里给item赋值不会影响集合的值
for (Integer item : col) {
System.out.print(item + " = ");
item = 10;
System.out.println(item);
}
System.out.println(StrUtil.toString(col));
// lambda ,注意 这里给item赋值不会影响集合的值
col.forEach(l-> System.out.println(l));
col.forEach(System.out::println);
二、数据结构
1、8种数据结构
栈 :先进后出,后进先出
队列:先进先出,后进后出
数组:内存连续区域,查询快,增删慢
队列:元素是游离的,查询慢,增删快,收尾操作极快
二叉树
- 度:每一个节点的子节点树 (二叉树 <=2)
- 树高:树的总层数
- 根节点:最顶层的节点
- 左子节点:左下方的节点
- 右子节点:右下方的节点
- 根节点的左子树:左下方的所有节点
- 根节点的右子树:右下方的所有节点
二叉查找树(不一定都有左右节点)
- 所有节点遵循:左孩子 < 父节点 < 右孩子
- 小的存左边
- 大的存右边
- 相等的不存
- 遍历
- 前序遍历:当前-左-右
- 中序遍历:左-当前-右
- 后续遍历:左-右-当前
- 层级遍历:从上到下一层一层
平衡二叉树(
任意节点
左右子树高度差不超过1)红黑树
三、双列集合
- 三种遍历
// 第一种遍历 keySet
Set<Integer> set = map.keySet();
set.forEach(k -> System.out.println(k + "=" + map.get(k)));
// 第二种遍历 EntitySet
Set<Map.Entry<Integer, String>> entries = map.entrySet();
entries.forEach((e) -> System.out.println(e.getKey() + "=" + e.getValue()));
for (Map.Entry<Integer, String> e : entries) {
System.out.println(e.getKey() + "=" + e.getValue());
}
// 第三种遍历 forEach
map.forEach((key, value) -> System.out.println(key + "=" + value));
最新文章
- Hadoop运维
- 配合 APP 调用 JS 的一次尝试
- HD2444The Accomodation of Students(并查集判断二分图+匹配)
- 《Linux命令行与shell脚本编程大全》 第二十二章 学习笔记
- myhuiban会议,期刊,科研人员,计算机类会议大全
- iOS-OC-基础-NSObject常用方法
- PHPCMS v9修改栏目或者单页没有权限
- JForum2.1.9 安装过程
- 没有闲话和grunt.initConfig()
- python --- 协程编程(第三方库gevent的使用)
- 用Python实现几种排序算法
- [C]\x字符转义序列
- 二、volatile关键字 - 内存可见性
- 学习笔记DL007:Moore-Penrose伪逆,迹运算,行列式,主成分分析PCA
- xmlhttp js 请求
- win10系统goole浏览器安装postMan插件
- codeforces982A
- easyui学习笔记2—在行内进行表格的增删改操作
- Opportunity Helper
- Clustered and Secondary Indexes