• Set集合


    Set集合

    无序,不允许重复

    public interface Set extends Collection

    没有新方法
            -boolean add(E e);向集合中追加元素e对象,如果出现重复则后添加数据直接丢弃

    如果进行对象相等比较:
            -首先调用当前对象所属类中的hashCode方法获取当前对象的hashCode值
            -按照hashCode值进行比较,
            -如果hashCode值不相等,则不会调用equals方法,直接得出结论两个对象不相等
            -如果hashCode值相等,才调用equals方法进行进一步判断
            -如果equals为真则判断两个对象相等

    潜规则:

            java要求当两个对象的equals为true时,要求两个对象的hashCode值相等。

    hashCode值相等并不一定equals为true

    实现类:
    - HashSet
    - TreeSet
    - LinkedHashSet

    1. import java.util.HashSet;
    2. import java.util.Objects;
    3. import java.util.Set;
    4. public class Test1 {
    5. public static void main(String[] args) {
    6. Set set=new HashSet();
    7. set.add(new A1(99L, "wangwu"));
    8. set.add(new A1(88L, "lisi"));
    9. set.add(new A1(99L, "zhangsan"));
    10. set.forEach(System.out::println);
    11. }
    12. }
    13. class A1{
    14. private Long id;
    15. private String name;
    16. @Override
    17. public int hashCode() {
    18. System.out.println(this+"::hashcode()");
    19. return id.hashCode();
    20. }
    21. //比较规则为:按照id进行比较,如果id相等则对象相等
    22. public boolean equals(Object obj) {
    23. System.out.println(this+"::equals()");
    24. if (this == obj)
    25. return true;
    26. if (obj == null)
    27. return false;
    28. if (getClass() != obj.getClass())
    29. return false;
    30. A1 other = (A1) obj;
    31. return Objects.equals(id, other.id);
    32. }
    33. public A1(Long id, String name) {
    34. super();
    35. this.id = id;
    36. this.name = name;
    37. }
    38. public Long getId() {
    39. return id;
    40. }
    41. public void setId(Long id) {
    42. this.id = id;
    43. }
    44. public String getName() {
    45. return name;
    46. }
    47. public void setName(String name) {
    48. this.name = name;
    49. }
    50. @Override
    51. public String toString() {
    52. return "A1 [id=" + id + ", name=" + name + "]";
    53. }
    54. }
  • 相关阅读:
    学习ALevel物理需要掌握的四个数学模型
    RK3566设置以太网MAC地址
    WPF中DataContext作用
    JAVA经典百题之判断星期几
    神经网络-标准数据集介绍
    小程序的赛道越来越拥挤
    BUG:vue路由切换时终止异步请求
    成都瀚网科技有限公司:抖音怎么绑定抖音小店才好?
    MySql生成ER【StarUML】文件
    卷积神经网络 - 图像卷积
  • 原文地址:https://blog.csdn.net/tiger_root/article/details/126651359