• 使HashSet变的有序并且可以去除重复对象的方法


    class Persont

    {
      private String name;
      private int age;
      public String getName()

       {
        return name;
      }
      public void setName(String name)

       {
        this.name = name;
      }
      public int getAge()

      {
        return age;
      }
      public void setAge(int age)

       {
        this.age = age;
      }

      Persont(String name,int age)

      {
        this.name=name;
        this.age=age;
      }
      public int hashCode() //重写了hashCode,将所有对象的哈希值设为一致。地址值一致才会运行equals进行重复判断;

      {
        System.out.println(this.getName()+"地址值");
        return this.name.hashCode()+age*39;
        //因为每个字符串都有哈希值,相同字符串哈希值相同。
        /*

        乘39是因为保证哈希值唯一性,比如如果李四name哈希值为4
        0,age是20,王五哈希值为20,age是40,地址值相同,系统会调用equals判断,
        这样运行的就会慢,所以尽量让他少判断

        */
      }
      public boolean equals(Object obj)

      {
        if(!(obj instanceof Persont)){
        return false;
      }

      Persont p=(Persont)obj;
      System.out.println("因地址值相同"+this.name+"比较了(equals运行)"+p.name+"的内容是否相同,相同存,不同不存");
      return this.name.equals(p.name)&&this.age==p.age;
      }
    }
    public class HashSetpaixu

    {

      public static void main(String[] args)

      {

        HashSet a=new HashSet();
        a.add(new Persont("王五",20));
        a.add(new Persont("李四",22));
        a.add(new Persont("李四",22));
        a.add(new Persont("王五",20));
        for(Iterator b=a.iterator();b.hasNext();)

        {
          Persont c=(Persont)b.next();
          System.out.println(c.getName()+c.getAge());
        }
      }

    }

  • 相关阅读:

    (luogu)[模板]最长公共子序列
    表达式的值
    邮票面值设计
    尼克的任务
    HISTOGRA
    消防局的设立
    青蛙的约会
    产生数
    奇怪的电梯
  • 原文地址:https://www.cnblogs.com/shenhengjia/p/9096620.html
Copyright © 2020-2023  润新知