Set容器的基本用法(Java)

 Set具有无序不可重复的特点

因为与List同为Collection的继承类,都继承了Collection的方法,基本操作与List一样,友友们可以看上一期对List容器基本用法的详解,这里我们讲的主要是Set容器基于equals方法的不可重复条件。

Set不可重复的基础是equals方法可以通过重写equals方法来定义数据相同的条件。

 1.建立Emp类,其中重写了equals方法和toString方法

package 集合Set;

import java.util.Objects;

public class Emp {
    private int id;
    private String ename;

    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;
        Emp emp = (Emp) o;
        return id == emp.id;
    }


    @Override
    public int hashCode() {
        return Objects.hash(id);
    }

    @Override
    public String toString() {
        return "Emp{" +
                "id=" + id +
                ", ename='" + ename + '\'' +
                '}';
    }

    public Emp(int id, String ename) {
        this.id = id;
        this.ename = ename;
    }

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getEname() {
        return ename;
    }

    public void setEname(String ename) {
        this.ename = ename;
    }
}

 2.按照类中定义的equals方法Set容器会自动去除重复的数据

package 集合Set;

import java.util.HashSet;
import java.util.Set;

/**
 * Set和List
 * Set中原素没有重复
 * 且是无序的
 *基本方法和List一致因为Set和List都是Collection的子接口
 *hashCode()获得对象的哈希值
 * 哈希值,用来计算对象的存储位置;
 * 调用hashCode方法获得哈希值
 * 通过哈希值得到地址
 * 看地址上是否存在元素
 * 如果存在调用equals方法
 *不存在直接调用add方法
 *
 *
 *
 *
 * LinkedHashSet 输入和输出的顺序相同
 *
 */
public class study_01 {
    public static void main(String[] args) {
      
       // test01();
        test02();
    }
    //Set的常用方法还有两个容器之间的操作和List一样
    private static void test01(){
        //继承至Collection
       // 基本方法和List一致因为Set和List都是Collection的子接口
        Set s=new HashSet<>();
        s.add("hello");
        s.add("word");
        s.add("hello");//不会重复加入
        System.out.println(s);
    }
    //set中不可重复的核心:equals方法
    private static void test02(){
        Emp e1=new Emp(1001,"赵宇晖");
        Emp e2=new Emp(1002,"赵雪晨");
        Emp e3=new Emp(1001,"王豪杰");
        Set set =new HashSet<>();
        set.add(e1);
        set.add(e2);
        set.add(e3);
        System.out.println(set);
    }

  • 6
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

外太空的莫扎特

在校生穷逼一个,呜呜呜

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值