黑马程序员技术交流社区
标题:
set集合
[打印本页]
作者:
lvwangxiao
时间:
2016-3-17 22:59
标题:
set集合
/*
* 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]
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2