黑马程序员技术交流社区

标题: set集合 [打印本页]

作者: lvwangxiao    时间: 2016-3-17 22:59
标题: set集合
  1. /*
  2. * Set:不包含重复元素的集合接口
  3. * HashSet:Set的子类,无需不可重复
  4. *
  5. * 构造方法:空参
  6. * 方法                add添加
  7. *                         remove删除
  8. *
  9. * HashSet判断元素唯一性的规则
  10. * 先判断新元素与集合内已经有的旧元素的HashCode值
  11. * 如果不同,判断元素不同
  12. * 如果相同,再判断equals比较结果,返回true则相同,返回false则仍然不同
  13. *
  14. *
  15. * 重写hashCode方法的规则:
  16. *         通过内容返回hashCode值
  17. *         依次将该对象中所有的属性值获取其hashCode值,再将所有属性值得hashCode累加,就是该对象的HashCode值
  18. *         如果是基本类型,如int,就直接变为数字相加
  19. *  如果是引用类型,就调用该引用类型的hashCode方法
  20. */
  21. public class Demo02HashSet {
  22.         public static void main(String[] args){
  23.                 HashSet<String> set = new HashSet<String>();
  24.                
  25.                 System.out.println(set.add("宋仲基"));
  26.                 System.out.println(set.add("宋慧乔"));
  27.                 System.out.println(set.add("太阳的后裔"));
  28.                 System.out.println(set.add("宋仲基"));
  29.                 System.out.println(set.add("宋慧乔"));
  30.                 System.out.println(set.add("宋仲基"));
  31.                
  32.                 set.remove("太阳的后裔");
  33.                 System.out.println(set);
  34.                
  35.                 System.out.println("========================");
  36.                 //放置自定义数据类型
  37.                
  38.                 HashSet<Person> set2 = new HashSet<Person>();
  39.                
  40.                 Person p1 = new Person("宋仲基", 30);
  41.                 Person p2 = new Person("宋慧乔",35);
  42.                 Person p3 = new Person("柳时镇",30);
  43.                 Person p4 = new Person("柳时镇",30);
  44.                
  45.                 set2.add(p1);
  46.                 set2.add(p2);
  47.                 set2.add(p3);
  48.                 set2.add(p4);
  49.                
  50.                 System.out.println(set2);
  51.                
  52.                
  53.                
  54.         }
  55.        
复制代码


输出结果:
true
true
true
false
false
false
[宋仲基, 宋慧乔]
========================
[宋慧乔 35, 柳时镇 30, 柳时镇 30, 宋仲基 30]





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2