java的集合以及数据结构

一、集合

1、介绍

  • 红色为接口
  • 蓝色为实现类
    image

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);

image

二、数据结构

1、8种数据结构

  • 栈 :先进后出,后进先出

  • 队列:先进先出,后进后出

  • 数组:内存连续区域,查询快,增删慢

  • 队列:元素是游离的,查询慢,增删快,收尾操作极快

  • 二叉树

    • 度:每一个节点的子节点树 (二叉树 <=2)
    • 树高:树的总层数
    • 根节点:最顶层的节点
    • 左子节点:左下方的节点
    • 右子节点:右下方的节点
    • 根节点的左子树:左下方的所有节点
    • 根节点的右子树:右下方的所有节点
  • 二叉查找树(不一定都有左右节点)

    • 所有节点遵循:左孩子 < 父节点 < 右孩子
    • 小的存左边
    • 大的存右边
    • 相等的不存
    • 遍历
      • 前序遍历:当前-左-右
      • 中序遍历:左-当前-右
      • 后续遍历:左-右-当前
      • 层级遍历:从上到下一层一层
  • 平衡二叉树(任意节点左右子树高度差不超过1)

  • 红黑树
    image
    image

三、双列集合

image
image

  • 三种遍历
// 第一种遍历 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));
posted @ 2023-02-16 21:10  his365  阅读(29)  评论(0编辑  收藏  举报