java8 HashSet,LinkedHashSet,TreeSet接口实现源码解析

本文详细解析了Java8中HashSet、LinkedHashSet、TreeSet接口的实现原理,从类继承关系、接口功能概述到具体实现,包括AbstractCollection、AbstractSet的基础实现,以及HashSet的HashMap依赖、LinkedHashSet的LinkedHashMap特性以及TreeSet的TreeMap实现。
摘要由CSDN通过智能技术生成

一、类继承关系

二、接口功能概述

Iterable接口包含的方法如下,实现该接口,则可以用for循环的方式遍历集合。

for循环遍历的核心在iterator()方法返回的迭代器Iterator,spliterator()方法返回的Spliterator用于并行流中将一个计算任务拆分成多个并行任务。Iterator接口包含的方法如下:

 Iterator接口主要用于取代低版本的Enumeration接口来遍历集合元素,相比原来的Enumeration接口增加了对删除元素的支持,并优化了接口方法的命名,注意remove()方法是删除上一次调用next()方法返回的元素,并且只能调用一次,重复调用会抛出IllegalStateException异常,参考如下用例:

@Test
    public void test10() throws Exception {
        Set<String> set=new HashSet<>();
        set.add("test");
        set.add("test2");
        set.add("test3");
        set.add("test4");
        set.add("test5");
        Iterator<String> iterator=set.iterator();
        while (iterator.hasNext()){
            String curr=iterator.next();
            System.out.println(curr);
            if(curr.equals("test")){
                iterator.remove();
                iterator.remove();
            }
        }
    }

 Collection接口是集合类接口的根接口,包含的方法如下:

注意toArray()返回的是Object[],不能强转成T[],只能在Object[]遍历时将Object强转成目标类型的元素。toArray(T[]) 方法的入参是一个目标类型的数组,如果集合中元素的个数大于入参数组的长度则返回一个新数组,否则将集合中的元素添加到入参数组中并返回。removeAll()方法和retainAll()方法是相反的,前者是删除所有在特定集合中的元素,后者是只保留在特定集合中的元素。参考如下测试用例:

@Test
    public void test2() throws Exception {
        Set<String> set=new HashSet<>();
        set.add("test");
        set.add("test21");
      
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值