• HashSet的泛型应用


      1 package com.lv.study.pm.first;
      2 
      3 import java.util.HashSet;
      4 import java.util.Set;
      5 
      6 //无序不可重复
      7 public class TestSet {
      8 
      9     public static void main(String[] args) {
     10         
     11         //set  TreeSet HashSet
     12         
     13         Set<String>set=new HashSet<String>();
     14         
     15         set.add("jck");//往set集合里面添加一个元素
     16         set.add("jcka");
     17         set.add("rose");
     18         set.add("tom");
     19         set.add("jck");//添加重复元素是不会报错的  当做没有看到
     20         
     21         System.out.println(set.size());
     22         
     23         Set<Person>setPer=new HashSet<Person>();
     24         
     25         Person p1=new Person("jack",12);
     26         Person p2=new Person("jack",22);
     27         Person p3=new Person("rose",12);
     28         Person p4=new Person("tom",122);
     29         
     30         ////如果重写自己的equals方法   就按照自己的规则去比较
     31         setPer.add(p1);
     32         setPer.add(p2);//如果没有重写自己的equals方法  就认为你俩的地址不一样就不是同样的对象
     33         setPer.add(p3);
     34         setPer.add(p4);
     35         
     36         System.out.println(setPer.size());
     37         
     38         for(Person p:setPer){
     39             System.out.println(p);
     40         }
     41     }
     42     
     43 }
     44 
     45 
     46 class Person{
     47     private String name;
     48     private int age;
     49     
     50     //有参构造器
     51     public Person(String name, int age) {
     52         this.name = name;
     53         this.age = age;
     54     }
     55 
     56     //无参构造器
     57     public Person() {
     58     }
     59 
     60     
     61     //我们的HashSet,在判断重复的元素的时候
     62     //1 判断这两个内容的hash值是不是相等个 相等有可能发生了hash碰撞  不相等就不是同一个元素
     63     //2 如果发生hash碰撞 就会调用equals方法 来确定这个对象里面的字段是否一致
     64     
     65     @Override
     66     public int hashCode() {
     67         final int prime = 31;
     68         int result = 1;
     69         result = prime * result + age;
     70         result = prime * result + ((name == null) ? 0 : name.hashCode());
     71         return result;
     72     }
     73 
     74     @Override
     75     public boolean equals(Object obj) {
     76         if (this == obj)
     77             return true;
     78         if (obj == null)
     79             return false;
     80         if (getClass() != obj.getClass())
     81             return false;
     82         Person other = (Person) obj;
     83 //        if (age != other.age)
     84 //            return false;
     85         if (name == null) {
     86             if (other.name != null)
     87                 return false;
     88         } else if (!name.equals(other.name))
     89             return false;
     90         return true;
     91     }
     92 
     93     @Override
     94     public String toString() {
     95         return "Person [name=" + name + ", age=" + age + "]";
     96     }
     97     
     98     
     99     
    100 }

  • 相关阅读:
    Spring Boot 使用actuator监控与管理
    Spring Boot入门
    mysql中update语句的锁
    LinkedList深入学习
    23种设计模式学习之享元模式
    23种设计模式学习之桥接模式
    23种设计模式学习之外观模式
    23种设计模式学习之代理模式
    23种设计模式学习之装饰者模式
    23种设计模式学习之适配器模式
  • 原文地址:https://www.cnblogs.com/dabu/p/12422819.html
Copyright © 2020-2023  润新知