HashSet

来源:互联网 发布:windows office 密钥 编辑:程序博客网 时间:2024/04/30 11:38
package com.cloud.learn;import java.util.HashSet;import java.util.Set;/** * Set接口 没有新方法 HashSet TreeSet  * 特征:存放不重复的对象 可以很快的查找 没有下标对应 * 只能用增强的for循环和Iterator进行遍历 */public class TestSet {public static void main(String[] args) {Set<String> set = new HashSet<String>();// set中没有重复的元素 equals的方法判断set.add("a");set.add("b");set.add("c");set.add("a");// set集合中对象的排列顺序与加入的顺序不相关System.out.println(set);boolean b = set.contains("b");System.out.println(b);for (String str : set) {System.out.println(str);}//hashSet扩容时要重新装载对象//可以设置可能开辟多少个对象,默认只有75%的使用Set<Point> pSet = new HashSet<Point>(100);pSet.add(new Point(1, 2));pSet.add(new Point(3, 4));pSet.add(new Point(5, 6));Point p = new Point(3, 4);//equals与hashCode方法是一致的//不重写hashCode时hashCode值为内存中的位置//没有重写hashCode方法时,此处为false。System.out.println(pSet.contains(p));}}

Point类中重写的hasCode和equals方法

public boolean equals(Object obj) {if(obj == null){return false;}if(obj == this){return true;}if(obj instanceof Point){Point p = (Point)  obj;return this.x == p.x&&this.y == p.y;}else{return false;}}public int hashCode() {final int prime = 31;int result = 1;result = prime * result + x;result = prime * result + y;return result;}


原创粉丝点击