Java源码阅读之Collection(容器)

Collection

什么是Collection?

  • Collection是java提供的标准集合集,有一些具体类,可供直接使用,有一些抽象类,提供接口实现。

  • Collection继承之 Iterable接口

  • Iterable接口抽象了两个方法:

    • forEach() 循环遍历
    • spliterator()
  • Collection定义了很多接口:

    • int size(); //容器大小
    • boolean isEmpty();//容器是否为空
    • boolean contains(Object o);//容器是否包含Object对象
    • Iterator iterator();//迭代器(获取集合类各个对象的一种方式)
    • Object[] toArray();//将集合的元素转化为数组
    • T[] toArray(T[] a);//将集合中的元素按照指定泛型(一致)进行互转 例如:String[] str =strList.toArray(new String[strlist.size()]);
    • boolean add(E e);//是否可以添加一个元素
    • boolean remove(Object o);//是否可以删除一个元素
    • boolean containsAll(Collection<?> c);//判断集合c是否是该集合的子集
    • boolean addAll(Collection<? extends E> c);//将集合C中元素中的元素全部添加到集合中
    • boolean removeAll(Collection<?> c);//将集合C中的元素在集合中删除
    • 方法default boolean removeIf(Predicate<? super E> filter)//删除掉过滤函数
     default boolean removeIf(Predicate<? super E> filter) {
        Objects.requireNonNull(filter);
        boolean removed = false;
        final Iterator<E> each = iterator();
        while (each.hasNext()) {
            if (filter.test(each.next())) {
                each.remove();
                removed = true;
            }
        }
          return removed;
      }
       例如:
        public class Person {
            private String name;//姓名
            private Integer age;//年龄
            private String gender;//性别
            ... 
           //省略构造方法和getter、setter方法
            ...
        }
        
         Collection<Person> collection = new ArrayList();
         collection.add(new Person("张三", 22, "男"));
         collection.add(new Person("李四", 19, "女"));
         collection.add(new Person("王五", 34, "男"));
         collection.add(new Person("赵六", 30, "男"));
         
         collection.add(new Person("田七", 25, "女"));
         collection.removeIf(new Predicate<Person>() {
            @Override
            public boolean test(Person person) {
              return person.getAge()>=30;//过滤30岁以上的
            }
          });
         System.out.println(collection.toString());//查看结果
    
    • boolean retainAll(Collection<?> c);//取出两个集合的交集
    • void clear();//清空集合中的元素
    • boolean equals(Object o);//比较集合中的元素是否相等
    • int hashCode();//集合的hashCode值
    • @Override
      default Spliterator spliterator() {
      return Spliterators.spliterator(this, 0);
      }//重写Iterable序列号方法

题外话:谢谢大家观看,有不足之处欢迎大家一起讨论;码字不易,大家喜欢,麻烦点赞哦。


灵魂三问:

  • 有没有觉得技术得不到系统的提升,技术成长慢?
  • 有没面试懵逼,升职加薪难?
  • 有没有想过去大一点的世界看看?

有期望JAVA技术巩固的、Android知识进阶的、期望升职加薪的、Android面试技巧的大厂面试真题的;大家可以加我QQ哦:1070800492。我们一起学习,一起进步!

重要的事情说三遍:

  • 学习、挣钱、自由
  • 学习、挣钱、自由
  • 学习、挣钱、自由

疫情当下,唯有自强

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值