单列集合(Collection)之Set集合

特点

  1. 无序(元素的存取顺序不一致),唯一

结论

  1. set集合保证元素的唯一性依赖:equals()和hasCode()方法

案例

  1. public class SetDemo {
  2. public static void main(String[] args) {
  3. //需求:在set集合中添加5个学生对象,然后遍历
  4. //1.创建集合对象
  5. Set<Student> set = new HashSet<>();
  6. //2.创建元素对象
  7. Student s1 = new Student("张三",23);
  8. Student s2 = new Student("李四",30);
  9. Student s3 = new Student("王五",40);
  10. Student s4 = new Student("王五",40);
  11. Student s5 = new Student("张三",23);
  12. //3.将集合对象添加到元素对象中
  13. set.add(s1);
  14. set.add(s2);
  15. set.add(s3);
  16. set.add(s4);
  17. set.add(s5);
  18. //4.遍历集合
  19. //为什么set集合没有“去重”
  20. //因为set集合保证元素的唯一性:equals()和hasCode()方法,你没有在xuesheng中重写这两个方法,默认调用的是object类中的这两个方法
  21. //而Object类中equals()方法默认比较的是地址值是否相同
  22. //解决方案:在xuesheng类中重写这两个方法
  23. System.out.println(set);
  24. System.out.println("------------------");
  25. //通过迭代器遍历集合
  26. //1.通过集合对象获取对应的迭代器对象
  27. Iterator<Student> it = set.iterator();
  28. //2.判断迭代器中是否有元素
  29. while (it.hasNext()){
  30. //3.如果有就获取
  31. Student s = it.next();
  32. System.out.println(s);
  33. }
  34. System.out.println("------------------");
  35. //通过增强for遍历集合
  36. for (Student student : set) {
  37. System.out.println(student);
  38. }
  39. }
  40. }