Java容器set接口、迭代器的使用

Set接口继承自Collection,Set接口中没有新增方法,方法和Collection保持完全一致。我们在前面通过List学习的方法,在Set中仍然适用。因此,学习Set的使用将没有任何难度。

Set容器特点:无序、不可重复。无序指Set中的元素没有索引,我们只能遍历查找;不可重复指不允许加入重复的元素。更确切地讲,新元素如果和Set中某个元素通过equals()方法对比为true,则不能加入;甚至,Set中也只能放入一个null元素,不能多个。

Set常用的实现类有:HashSet、TreeSet等,我们一般使用HashSet。

一、Hashset

HashSet是采用哈希算法实现,底层实际是用HashMap实现的(HashSet本质就是一个简化版的HashMap),因此,查询效率和增删效率都比较高。

下面是HashSet的源代码

观察源代码可以看出,它的add方法底层是用map.put实现的,在map中键值不能重复,所以在set中也不能重复。

二、Treeset

它与Treemap基本差不多,调用的方法与Hashset一样

三、迭代器

迭代器是对容器里面内容的遍历

下面是对list的遍历:

public static void  test1(){
        List<String> list=new ArrayList<>();
        list.add("lan1");
        list.add("lan2");
        list.add("lan3");
        for(Iterator<String> iterator=list.iterator();iterator.hasNext();){
            String temp=iterator.next();
            System.out.println(temp);
        }
    }

下面是对set的遍历:

public static void test2(){
        Set<String> set=new HashSet<>();
        set.add("lan1");
        set.add("lan2");
        set.add("lan3");
        for(Iterator<String> iterator=set.iterator();iterator.hasNext();){
            String temp=iterator.next();
            System.out.println(temp);
        }
    }

下面是对Map的遍历

public static void test3(){
        Map<Integer,String> map=new HashMap<>();
        map.put(0,"lan0");
        map.put(1,"lan1");
        Set<Map.Entry<Integer,String>> set=map.entrySet();
        for(Iterator<Map.Entry<Integer,String>> iterator=set.iterator();iterator.hasNext();){
            Map.Entry<Integer,String> temp=iterator.next();
            System.out.println(temp);
        }
    }

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值