当前位置:   article > 正文

每日一练代码训练-12-01(1)_haose01

haose01

 对Collection接口常用方法的训练

  1. public class Main {
  2. public static void main(String[] args) {
  3. //Collection接口详解
  4. //常用的方法
  5. /*boolean add(E e)
  6. * 确保此集合包含指定的元素(可选操作)
  7. * */
  8. /*
  9. * int size()
  10. * 返回此集合中的元素数
  11. * */
  12. /*
  13. * void clear()
  14. * 从此集合中删除所有元素,(可选操作)
  15. *
  16. * Object[] toArray()
  17. * 返回一个包含此集合中所有元素的数组
  18. *
  19. * boolean isEmpty()
  20. * 如果此集合不包含元素,则返回true
  21. *
  22. * Itertor iterator()
  23. * 返回此集合中的元素的迭代器
  24. * 通过迭代器中方法完成集合的迭代(遍历)
  25. * */
  26. class Customer{
  27. String name;
  28. int age;
  29. //构造方法,初始化变量
  30. Customer(String name,int age){
  31. this.name = name;
  32. this.age = age;
  33. }
  34. //toString返回字符串
  35. public String toString(){
  36. return "Customer[name = "+name+"age="+age+"]";
  37. }
  38. }
  39. //1.创建集合
  40. Collection c = new ArrayList();
  41. //2.添加元素
  42. c.add(1);
  43. c.add(new Integer(100));
  44. Object o = new Object();
  45. c.add(o);//Collection集合只能单个存储元素
  46. Customer cust = new Customer("张三",20);
  47. c.add(cust);
  48. //3.将集合转换成Object类型数组
  49. Object[] objs = c.toArray();
  50. //遍历数组
  51. for(int i=0;i< objs.length;i++){
  52. System.out.println(objs[i]);
  53. }
  54. //4.获取元素的个数
  55. System.out.println(c.size());//4
  56. System.out.println(c.isEmpty());//FALSE
  57. //5.清空元素
  58. c.clear();
  59. System.out.println(c.size());//0
  60. System.out.println(c.isEmpty());//TRUE
  61. }
  62. }

迭代器的使用

  1. public class Main {
  2. public static void main(String[] args) {
  3. //创建对象
  4. Collection<Comparable> c = new LinkedList<Comparable>();
  5. //添加元素
  6. c.add(10);
  7. c.add(3.14);
  8. c.add(true);
  9. //迭代元素
  10. //1.获取迭代对象
  11. Iterator<Comparable> it = c.iterator();
  12. System.out.println(it);
  13. /*
  14. * java.util.AbstractList$Itr是ArrayList集合所依赖的迭代器
  15. * java.util.LinkedList$ListItr是ListedList集合所依赖的迭代器
  16. * Itr、ListItr是内部类
  17. * 迭代器是面向接口编程,it是引用,保存了内存地址,指向堆中的”迭代器对象“
  18. * */
  19. //2.遍历集合调用Collection内部方法
  20. while(it.hasNext()){
  21. Object element = it.next();
  22. System.out.println(element);
  23. }
  24. /*
  25. * boolean b = it.hasNext();判断是否有更多的元素
  26. * Object element = it.next();将迭代器下移一位,并且取出指向的元素
  27. * 原则:it.next()之前必须先调用it.hasNext()方法,防止出现空指针异常
  28. * */
  29. /*
  30. * for(Iterator<Comparable> it1 = c.iterator();it.hasNext();){
  31. * Object element1 = it.next();
  32. * System.out.println(element1);
  33. * }
  34. * */
  35. }
  36. }

 contains和remove的用法,但是有一个和题目不一样,remove(i2)返回的是false

  1. package web;
  2. import java.util.*;
  3. public class Main {
  4. public static void main(String[] args) {
  5. /*boolean contains(Object o)
  6. 如果此集合包含指定的元素,则返回 true 。
  7. boolean remove(Object o)
  8. 从该集合中删除指定元素的单个实例(如果存在)(可选操作)。
  9. 存储在集合中的元素应该去重写equals方法*/
  10. //创建集合
  11. Collection c = new ArrayList();
  12. //创建Integer类型的对象
  13. Integer i1 = new Integer(10);
  14. //添加对象到集合中
  15. c.add(i1);
  16. //判断集合中是否包含对象i1
  17. System.out.println(c.contains(i1));//true
  18. //再创建一个Integer对象
  19. Integer i2 = new Integer(10);
  20. //删除
  21. c.remove(i2);
  22. System.out.println(c.size());//0
  23. //判断集合中是否包含对象i2
  24. System.out.println(c.contains(i2));//true
  25. //实际上这里返回的是false
  26. //这就涉及到之前学的整型常量池,所以i1就是i2
  27. //并且contains方法底层调用的是equals方法
  28. //创建Manager对象
  29. Manager m1 = new Manager(10,"张三");
  30. // m1.setAge(18);
  31. // m1.setName("张三");
  32. //添加对象
  33. c.add(m1);
  34. //判断集合中是否存在对象m1
  35. System.out.println(c.contains(m1));//true
  36. //再添加一个manager对象
  37. Manager m2 = new Manager(10,"张三");
  38. // m2.setAge(18);
  39. // m2.setName("张三");
  40. //判断集合中是否存在对象m2
  41. System.out.println(c.contains(m2));//true
  42. //删除
  43. c.remove(m2);
  44. System.out.println(c.size());//0
  45. //重写equals方法之前
  46. //System.out.println(c.contains(m2));false
  47. //重写equals方法之后
  48. //System.out.println(c.contains(m2));false
  49. }
  50. }
  51. class Manager{
  52. int age;
  53. String name;
  54. Manager(int age,String name){
  55. this.age = age;
  56. this.name = name;
  57. }
  58. public int getAge() {
  59. return age;
  60. }
  61. public void setAge(int age) {
  62. this.age = age;
  63. }
  64. public String getName() {
  65. return name;
  66. }
  67. public void setName(String name) {
  68. this.name = name;
  69. }
  70. //重写equals方法
  71. public boolean equals(Object o){
  72. if(this == o) return true;
  73. if (o instanceof Manager){
  74. Manager m = (Manager) o;
  75. if (m.age == this.age && m.name.equals(this.name)){
  76. return true;
  77. }
  78. }
  79. return false;
  80. }
  81. }

 1.迭代器的remove方法

2.集合本身的remove方法

注意:使用集合本身的remove方法运行会报错,代码没有错,查了资料是什么空指针问题,看不懂

  1. package web;
  2. import java.util.*;
  3. public class Main {
  4. public static void main(String[] args) {
  5. //创建一个集合
  6. Collection c = new ArrayList();
  7. //添加元素
  8. c.add(1);
  9. c.add(2);
  10. c.add(3);
  11. //获取迭代器遍历
  12. Iterator it = c.iterator();
  13. while (it.hasNext()) {
  14. //推荐使用迭代器自身的remove方法
  15. it.next();
  16. //删除
  17. it.remove();
  18. /*
  19. * 使用集合本身的remove方法删除
  20. *
  21. * Object element = it.next();
  22. *
  23. * //删除
  24. * c.remove(element);
  25. *
  26. * 这样方式需要在每一次删除后重新获取新的迭代器
  27. *
  28. * */
  29. }
  30. System.out.println(c.size());//0
  31. }
  32. }

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/神奇cpp/article/detail/1014892
推荐阅读
相关标签
  

闽ICP备14008679号