set集合去重复
2016-03-16 13:29
253 查看
由于set集合是一个不包含重复元素的 collection,所以本身set集合存值是无序不重复的。如果将可变对象用作 set 元素,那么必须极其小心。如果对象是 set 中某个元素,以一种影响 equals 比较的方式改变对象的值,那么 set 的行为就是不确定的。此项禁止的一个特殊情况是不允许某个 set 包含其自身作为元素。
import java.util.HashSet; import java.util.Set; public class setJh { public static void main(String[] args){ Food obj1 = new Food("苹果","12"); Food obj2 = new Food("苹果","9"); Food obj3 = new Food("苹果","12"); Food obj4 = new Food("梨子","12"); Set<Food> set = new HashSet<Food>(); set.add(obj1); set.add(obj2); set.add(obj3); set.add(obj4); System.out.println(set.size()); } }
public class Food { private String name; private String price; public Food(String name, String price){ this.name = name; this.price = price; } @Override//覆盖Object类中的hashCode()方法 public int hashCode() { return this.name.hashCode()*this.price.hashCode();//产生一个独有的hashcode } @Override//覆盖Object类中的equals()方法 public boolean equals(Object obj) { if(this==obj){ return true; } if(!(obj instanceof Food)){ return false; } Food food=(Food)obj; if(this.name.equals(food.name)&&this.price.equals(food.price)){ return true; } else{ return false; } } }
相关文章推荐
- 第四周课本学习 (第一章 第二章 )
- 菜鸟跑通caffe(二)
- 菜鸟跑通caffe(一)
- 菜鸟跑通doppia(四)
- laravel的编辑器 (未经测试先mark)
- 菜鸟跑通doppia(二)
- CMakeList中两种加载opencv库的方法
- 关于protoc触发的关于$PATH中路径先后顺序影响的思考
- ubuntu双网卡设置:系统的网络服务与此版本的网络管理器不兼容
- Sicily 1140 国王的遗产
- 菜鸟跑通doppia(一)
- 操作html字符串
- 哈夫曼树详解
- 差分布线原则
- 菜鸟前来报道
- openstack在公司应用情况
- cocos2d-x shader(1)-基本概念与使用
- c# ora-00177
- Git学习(二) Git使用教程
- IOS 使用高德地图一次定位