问答详情
源自:4-11 学生选课---通过 Set 集合管理课程

为什么这个set数组中元素重复了?

import java.util.*;


public class SetTest {
 public Set<Course> setList;
 {
  setList=new HashSet<Course>();
 }
 public void testAdd(){
  Course c1 =new Course(4,"Add方法添加成功");
  setList.add(c1);
 }
 public void testAddAll(){
  Course[] c2 ={new Course(5,"addAll方法添加成功"),new Course(6,"addAll方法添加成功")};
  setList.addAll(Arrays.asList(c2));  
 }
 public void blForeach(){
  for(Object ob:setList){ 
   Course b3 = (Course) ob;
   System.out.println(b3.id+":"+b3.name);
  }
  System.out.println();
 }
}

主函数
System.out.println("集合Set遍历如下");
  SetTest s1 = new SetTest();
  s1.testAdd();
  s1.testAddAll();
  s1.testAdd();  //Set集合众的元素无序且不重复,此添加无效
  s1.blForeach();

运行结果
集合Set遍历如下
5:addAll方法添加成功
4:Add方法添加成功
4:Add方法添加成功
6:addAll方法添加成功

不是说set集合不能有重复的元素么。。。我这个程序是哪里错了呢?


提问者:Goldberg 2016-02-21 19:28

个回答

  • qq_不作茧_0
    2016-02-21 20:16:03
    已采纳

      set添加的是引用 你调用两次add方法 创建了两个Course对象 

    如果 你是    Course c1 =new Course(4,"Add方法添加成功");
      setList.add(c1);  setList.add(c1);

    这样就添加无效