java的集合以及数据结构
一、集合
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));
世界上没有什么事情是跑步解决不了的,如果有,那就再跑一会!