- /*
- * Set:不包含重复元素的集合接口
- * HashSet:Set的子类,无需不可重复
- *
- * 构造方法:空参
- * 方法 add添加
- * remove删除
- *
- * HashSet判断元素唯一性的规则
- * 先判断新元素与集合内已经有的旧元素的HashCode值
- * 如果不同,判断元素不同
- * 如果相同,再判断equals比较结果,返回true则相同,返回false则仍然不同
- *
- *
- * 重写hashCode方法的规则:
- * 通过内容返回hashCode值
- * 依次将该对象中所有的属性值获取其hashCode值,再将所有属性值得hashCode累加,就是该对象的HashCode值
- * 如果是基本类型,如int,就直接变为数字相加
- * 如果是引用类型,就调用该引用类型的hashCode方法
- */
- public class Demo02HashSet {
- public static void main(String[] args){
- HashSet<String> set = new HashSet<String>();
-
- System.out.println(set.add("宋仲基"));
- System.out.println(set.add("宋慧乔"));
- System.out.println(set.add("太阳的后裔"));
- System.out.println(set.add("宋仲基"));
- System.out.println(set.add("宋慧乔"));
- System.out.println(set.add("宋仲基"));
-
- set.remove("太阳的后裔");
- System.out.println(set);
-
- System.out.println("========================");
- //放置自定义数据类型
-
- HashSet<Person> set2 = new HashSet<Person>();
-
- Person p1 = new Person("宋仲基", 30);
- Person p2 = new Person("宋慧乔",35);
- Person p3 = new Person("柳时镇",30);
- Person p4 = new Person("柳时镇",30);
-
- set2.add(p1);
- set2.add(p2);
- set2.add(p3);
- set2.add(p4);
-
- System.out.println(set2);
-
-
-
- }
-
复制代码
输出结果:
true
true
true
false
false
false
[宋仲基, 宋慧乔]
========================
[宋慧乔 35, 柳时镇 30, 柳时镇 30, 宋仲基 30]
|
|