Java高级集合篇

Java高级集合篇

HashSet

采用hash表实现

元素不重复, 无序的, 允许存null

不能按下标读取元素,只能遍历

HashSet的常用方法:

       //创建HashSet。 默认长度16, 加载因子为0.75
        HashSet<String> set = new HashSet<>();
        //往set添加元素
        set.add("Java");
        set.add("Html");
        set.add("SQL");
        set.add("Java");//重复的内容,在set里面只有一个

		//返回元素的个数
        System.out.println(set.size());

        //遍历set的元素
        for (String str : set) {
   
            System.out.println(str);
        }

        //查找是否包含某个对象(对象要重写hashCode和equals)
        System.out.println(set.contains("Java"));

        //删除set的集合
        set.remove("Java");

        //清空set
        set.clear();

        //判断set是否是空的
        System.out.println(set.isEmpty());

例:给出一个数组,请把数组中重复的元素去掉,返回一个新的数组

{1, 30, 25, 40, 18, 30, 22, 40}

       int[] arr1 = {
   1, 30, 25, 40, 18, 30, 22, 40};
        HashSet<Integer> set = new HashSet<Integer>();
        for (int a : arr1) {
   
            set.add(a);
        }
        //定义新数组,长度跟set一样
        int[] arr2 = new int[set.size()];
        //数组的下标
        int i = 0;
        //遍历set
        for (int a : set) {
   
            arr2[i] = a; //把元素放进数组
            i++; //下标的增加
        }
        //打印数组
        System.out.println(Arrays.toString(arr2));

TreeSet

  • 二叉树

    每一个节点下面最多只有两个分支

  • 满二叉树

    除了叶子节点外,每个分支都有两个节点

  • 完全二叉树

    最底层的分支可以不是完全的,但是必须要先保证左边的分支全部填满

  • 二叉查找树

左节点比父节点小,右节点比父节点大

  • 红黑树

它就是一种自平衡二叉查找树

特征:

  1. 节点只有红色或黑色
  2. 根节点是黑色
  3. 叶子节点为黑色,叶子节点存NIL
  4. 一个节点为红色,则它的两个子节点必须为黑色(从根节点到叶子节点的所有路径,不可能存在两个连续的红色节点)
  5. 每个节点到叶子节点的所有路径,都包含相同数目的黑色节点

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-4vLuwZvf-1660539185057)(C:\Users\86156\AppData\Roaming\Typora\typora-user-images\image-20220815125117391.png)]

TreeSet的特性:

  • TreeSet采用红黑树数据结构来实现的。

  • 不能添加null

  • 不能添加重复的元素

  • 添加的元素会被排序,遍历出来是按顺序排列的

  • TreeSet的元素必须要实现Comparable (如果没有实现Comparable 接口,运行时抛类型转换错误异常ClassCastException)

常用的方法:

        TreeSet<Integer> set = new TreeSet<>();
        set.add(20);
        set.add(25);
        set.add(8);
        set.add(16);

        //返回元素的个数
        System.out.println("元素个数:" + set.size());

        //返回排序后的第一个元素
        System.out.
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值