A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 李九一 中级黑马   /  2013-6-29 09:55  /  1539 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

Set里的元素是不能重复的,那么用iterator()方法来区分重复与否。equals()是判读两个Set是否相等。
  equals()==方法决定引用值是否指向同一对象equals()在类中被覆盖,为的是当两个分离的对象的内容和类型相配的话,返回真值。

评分

参与人数 1黑马币 +3 收起 理由
神之梦 + 3 鼓励发帖,但问题能明确点最好.

查看全部评分

6 个回复

倒序浏览
见Lz的问题,我想起《银河系漫游指南》中的一句话,你的问题是什么?我才能给出答案。(不太准确,类似啊,是关于那个终极问题到底是什么的话)
就我的理解:
1、Set集合中保证元素唯一性分两种情况: HashSet和TreeSet的不同实现;
存储到HashSet的类对象要: 复写hashCode方法和equals方法来保证元素的唯一性。
存储到TreeSet的类对象要: 复写compareTo方法(实现Comparable接口)或者compare方法(使用实现Comparator的比较器)中的来保证元素的唯一性。
2、iterator()方法是实现Iterator接口获得的创建迭代器实例对象方法(从JDK1.5开始有此接口,之前直接嵌套在Collection内部),这是迭代/遍历集合中元素的方法,而不是比较重复性;
3、equals()方法,因为HashSet只需比较两个对象元素是否相同,无需其他排序(自动进行哈希表排序),所以复写hashCode和equals方法;
而TreeSet需要进行自然排序或指定排序方式,它内部比较两个对象元素时可能是通过equals来比较两个对象,但是比较的方式是通过对象内部的compareTo()方法或指定比较器的compare()方法来进行排序。(此处对象类中的equals无需复写,比较两个对象时自动调用对象自身等的比较方式);
4、equals()和hashCode()等方法还起到判断元素是否存在于Set集合中、删除元素等的功能。

评分

参与人数 1技术分 +1 收起 理由
神之梦 + 1

查看全部评分

回复 使用道具 举报
本帖最后由 王楚鑫 于 2013-6-29 13:33 编辑

见Lz的问题,我想起《银河系漫游指南》中的一句话,你的问题是什么?我才能给出答案。
保持队形吗???(*^__^*) 嘻嘻……

就我的理解:

Set接口实现了Collection接口,Set接口不允许存放重复的对象,排序方式为按照自身内部的排序规则。

Set接口的常用方法:iterator()方法返回一个迭代器,
                                equals()方法能快速且准确的判断在集合中是否存在与添加对象相同的对象。
附上个iterator()使用的代码
  1. import java.util.HashSet;
  2. import java.util.Iterator;
  3. import java.util.Set;

  4. public class DemoHashSet {
  5. private String name; // 姓名属性
  6. private long id_card; // 证件号码属性

  7. public DemoHashSet(String name, long id_card) { // 构造方法
  8. this.name = name;
  9. this.id_card = id_card;
  10. }

  11. public long getId_card() { // 获取证件号码属性的方法
  12. return id_card;
  13. }

  14. public void setId_card(long id_card) { // 设置证件号码属性的方法
  15. this.id_card = id_card;
  16. }

  17. public String getName() { // 获取姓名属性的方法
  18. return name;
  19. }

  20. public void setName(String name) { // 设置姓名属性的方法
  21. this.name = name;
  22. }

  23. public static void main(String[] args) {
  24. Set<DemoHashSet> hashSet = new HashSet<DemoHashSet>(); // 创建Set集合对象
  25. hashSet.add(new DemoHashSet("陈同学", 220181)); // 向集合中添加对象
  26. hashSet.add(new DemoHashSet("王同学", 220186));
  27. hashSet.add(new DemoHashSet("李同学", 220193));
  28. Iterator<DemoHashSet> it = hashSet.iterator(); // 创建集合迭代器
  29. System.out.println("集合中的元素是:");
  30. while (it.hasNext()) { // 循环遍历迭代器
  31. DemoHashSet person = it.next();
  32. System.out.println(person.getName() + " " + person.getId_card());
  33. }
  34. }
  35. }
复制代码
equals()方法和==的区别:
1.==可用于基本类型和引用类型:当用于基本类型时候,是比较值是否相同;当用于引用类型的时候,是比较对象是否相同。
2.对于String a = “a”; Integer b = 1;这种类型的特有对象创建方式,==的时候值是相同的。
3.基本类型没有equals方法,equals只比较值(对象中的内容)是否相同(相同返回true)。
4.一个类如果没有定义equals方法,它将默认继承Object中的equals方法,返回值与==方法相同。

评分

参与人数 1技术分 +1 黑马币 +2 收起 理由
神之梦 + 1 + 2 赞一个!

查看全部评分

回复 使用道具 举报
尹桥印 发表于 2013-6-29 10:59
见Lz的问题,我想起《银河系漫游指南》中的一句话,你的问题是什么?我才能给出答案。
又见神回复.. ...

《银河系漫游指南》这个是神马?
回复 使用道具 举报
神之梦 发表于 2013-6-29 14:40
《银河系漫游指南》这个是神马?

一本科幻小说书,也有电影版,电影的剪辑有点菜,不过还是值得看,O(∩_∩)O~
在国外是挺畅销的书,传说小说男猪脚的名字还成为现实中一个小行星的名字,呵呵
回复 使用道具 举报
zms2100 发表于 2013-6-29 19:38
一本科幻小说书,也有电影版,电影的剪辑有点菜,不过还是值得看,O(∩_∩)O~
在国外是挺畅销的书,传说 ...

{:3_56:}                           
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马