Java 集合8 List 的子接口 Set

Set集合详解
本文介绍了Java中Set集合的特点,包括无序性和唯一性,并通过实例演示如何使用HashSet来存储唯一元素。探讨了当存储自定义对象时如何确保集合元素的唯一性。

在List 集合允许元素的重复,而在List 集合中去重复,是一个比较复杂的操作。因此,如果要求集合中的元素唯一,可以直接考虑 Set 接口
Set
一个无序的不包含重复元素的集合,更正式地,集合不包含一对元素e1和e2 ,使得e1.equals(e2) ,并且最多一个空元素。继承了Collection 的所有方法,同时没有定义自己的特殊方法。则取出元素的方法只有一种,使用迭代器。

Set srt = new HashSet();//Set 也是接口,通过实现类创建集合实例

创建和获取:

package Collection;
import java.util.*;
/*
接口Set  也是Collection 的一个子接口
是一个无序,不包含重复元素的集合
 */
public class SetDemo {
    public static void main(String[] args){
        //1.创建集合——通过实现类
        Set set = new HashSet();
        //2.添加元素
        set.add("itcast1");
        set.add("xixi");
        set.add("haha");
        set.add("wowo");
        //Set  只能通过迭代器获取元素
        for(Iterator it= set.iterator();it.hasNext();){
            System.out.println(it.next());
        }
    }
}

运行结果:
haha
itcast1
wowo
xixi
结果不保证有序性(可能有序也可能无序),和List 不一样,List 的迭代器获取输出是有序的(输出和输入一致)

体现Set 的惟一性:添加重复的元素:

set.add("itcast1");
        set.add("xixi");
        set.add("xixi");
        set.add("wowo");

运行结果:
itcast1
wowo
xixi
会自动删除重复性,保证集合中的元素唯一
但是如果是自定义的对象,例如 存储了自定义的学生对象(equals 已经被覆盖)
代码:

set.add(new Student("Lisi",20));
        set.add(new Student("Zhangshan",25));
        set.add(new Student("Lisi",20));
        set.add(new Student("Wangwu",18));

运行结果:
Lisi 20
Wangwu 18
Zhangshan 25
Lisi 20
保证唯一性失败,为什么呢?这个就要探讨Set 实现类的数据结构。


Set 的常用实现类 :hashSet TreeSet
此类实现Set接口,由哈希表(实际为HashMap实例)支持,不保证迭代的顺序性。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值