类集HashSet
2015-11-08 21:31
162 查看
HashSet
(采用散列存储(哈希算法就是计算散列存储位置的一种算法),所有是无序的,重复的只会出现一次(因为相同东西算出来的位置是一样的))如果是我们自己定义的类就会出现重复,除非你重写equals和hashCode方法才会删除重复。
import java.util.HashSet; public class TreeSetDemo1 { public static void main(String[] args) { HashSet<Dog> ts = new HashSet<Dog>(); ts.add(new Dog("1", 33)); ts.add(new Dog("2", 2)); ts.add(new Dog("2", 44)); ts.add(new Dog("2", 12)); ts.add(new Dog("3", 13)); ts.add(new Dog("4", 14)); System.out.println(ts); } } class Dog{ private String name; private int age; public Dog(String name, int age) { this.name = name; this.age = age; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public String toString() { return (this.name + ":" + this.age); } public boolean equals(Object obj){ //首先判断是不是我们要判断的类型 if(!(obj instanceof Dog)){ return false; } //判断是不是不同名字,但是指向了同一个 if(this == obj ){ return true; } //判断是不同的对象,但是值确是一样 Dog d = (Dog)obj; if(this.age == d.getAge()&&this.getName()==d.getName()){ return true; }else{ return false; } } public int hashCode(){ return this.name.hashCode(); //return this.name.hashCode()*this.age; } }
相关文章推荐
- Tomcat端口被占用解决方法(不用重启)
- 动易2006序列号破解算法公布
- “传奇”图象数据存储方式
- Ruby实现的矩阵连乘算法
- C#插入法排序算法实例分析
- 超大数据量存储常用数据库分表分库算法总结
- C#数据结构与算法揭秘二
- C#冒泡法排序算法实例分析
- 算法练习之从String.indexOf的模拟实现开始
- C#算法之关于大牛生小牛的问题
- SQL Server误区30日谈 第18天 有关FileStream的存储,垃圾回收以及其它
- C#实现的算24点游戏算法实例分析
- c语言实现的带通配符匹配算法
- 浅析STL中的常用算法
- 算法之排列算法与组合算法详解
- C++实现一维向量旋转算法
- Ruby实现的合并排序算法
- C#折半插入排序算法实现方法
- C++实现图的邻接表存储和广度优先遍历实例分析