zoukankan      html  css  js  c++  java
  • 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 }

  • 相关阅读:
    SCILAB简介[z]
    UG OPEN API编程基础 2约定及编程初步
    Office 2003与Office 2010不能共存的解决方案
    UG OPEN API 编程基础 3用户界面接口
    NewtonRaphson method
    UG OPEN API编程基础 13MenuScript应用
    UG OPEN API编程基础 14API、UIStyler及MenuScript联合开发
    UG OPEN API编程基础 4部件文件的相关操作
    UG OPEN API编程基础 1概述
    16 UG Open的MFC应用
  • 原文地址:https://www.cnblogs.com/dabu/p/12422819.html
Copyright © 2011-2022 走看看