2022-11-24 关于集合

  • 集合的由来

    • 存放多个类型不同的对象
  • 集合的框架结构

     

    • java中集合框架顶层框架是:java.util.Collection集合和java.util.Map集合。
    • Collection中存取元素的基本单位是:单个元素。
    • Map集合中存取元素的基本单位是:单对元素。
  • Collection集合

  •  

     
    • 概念:
  • 常用的方法

     

    • 上面图片是 c1addAll(c2)和c1add(c2)的区别: 
      • o代表contains方法的形式参数        e代表集合中的每个元素
      • contains方法的工作原理就是拿着参数对象与集合中已有的元素依次进行比较。
      • 比较的方式:调用Objects中的equals方法
      • a代表Person对象,b代表集合中已有的对象
    • 元素包含的第一种方式就是:Person对象与集合中已有对象的地址相同
    • 第二种方式是:Person对象不为空且Person对象调用equals方法与集合中已有的元素相等。
    • 当Person类中没有重写equals方法时,此时调用从Object类中继承下来的equals方法,比较两个对象的地址。
    • 当Person类中重写equals方法后,则调用重写以后的版本,比较两个对象的内容 
    • 官方的Integer类与String类都重写了equals方法,而我们自己写的类没有重写equals方法
  • retainAll:交集的概念

     

    • 当前集合如果发生改变,就返回true,否则,,就返回false 

  •  remove:删除的方法

    • 从当前集合中删除参数指定的对象
    • 删除成功就返回true,失败就返回false
  • 集合中其他方法

     

     

    • 判断集合中的元素个数是否相等
    •  //9.实现集合中其他方法的测试
              //ctrl +n可以直接搜索并打开类的源码  使用ctrl+f12可以搜索类中的方法
              System.out.println("集合中元素的个数为:" + c1.size());
              System.out.println(0 == c1.size() ? "集合已经空了": "集合还没有空!");
              System.out.println(c1.isEmpty() ? "集合已经空了!" : "集合还没有空");
              //清空集合中的所有元素
              c1.clear();
              System.out.println("集合中元素的个数为:" + c1.size());
              System.out.println(0 == c1.size() ? "集合已经空了": "集合还没有空!");
              System.out.println(c1.isEmpty() ? "集合已经空了!" : "集合还没有空");
      
              //判断集合中的元素个数是否相等
              //准备了两个集合
              Collection c4 = new ArrayList();
              c4.add(1);
              c4.add(2);
              System.out.println("c4 = " + c4);
              Collection c5 = new ArrayList();
              c5.add(1);
              c5.add(2);
              System.out.println("c = " + c5);
      
              //判断是否相等
              b1 = c4.equals(c5);
              System.out.println("b1 = " + b1);
      

    • toArray 将集合转换为数组

      •   //10.实现集合和数组之间的转换-------通常认为集合时取代数组的结构
                Object[] objects = c5.toArray();
                //打印数组中的所有元素
                System.out.println("数组中的元素有:" + Arrays.toString(objects));
                //实现数组类型到集合类型的转换
                List<java.lang.Object> objects1 = Arrays.asList(objects);
                System.out.println("集合中的所有元素有:" + objects1);  //[1,2,3]
  • Iterator 接口  (迭代器)

    • 遍历集合中的所有元素。Collection接口继承Iterator接口
  • 常用的方法

    • //由于上个循环已经使得迭代器走到了最后,因此需要重置迭代器
              iterator = c1.iterator();
              StringBuilder sb1 = new StringBuilder();
              //3.使用迭代器来模拟toString效果
              sb1.append("[");
              while (iterator.hasNext()){
                  Object obj = iterator.next();
                  //当获取到的元素是最后一个时,则拼接元素加中括号
                  if (!iterator.hasNext()){
                      sb1.append(obj).append("]");
                  }else{
                      //否则拼接元素加逗号加空格
                      sb1.append(obj).append(",").append(" ");
                  }
      
              }
              System.out.println("c1 = " + sb1);
    • 删除访问的最后一个元素

    •  //4.不断地去获取集合中的元素并判断,当元素值为"one"时,,则删除该元素
              iterator = c1.iterator();
              while (iterator.hasNext()){
                  Object obj = iterator.next();----异常是因为迭代器被破坏了
                  if ("one".equals(obj)){
                      ///只要不是再迭代的过程中调remove方法,用迭代器自身的删除方法
                     iterator.remove();  //使用迭代器的remove删除元素没问题
                      //c1.remove()          //使用集合的remove编译ok,运行发生并发修改异常
                  }
              }
              System.out.println("删除后集合中的元素有:" + c1);
          }
      }
  • for each循环  迭代器的简化版

    • 不断从数组或者集合中取出元素,直到全部取完。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值