• 【Java】集合与顶级接口Collection


    Java集合类存放于 java.util 包中,是一个用来存放对象的容器

    • 集合只能存放对象。比如存一个int型数据1放入集合中,其实它是自动转换成Integer 类后存入的(装箱操作),Java中每一种基本类型都有对应的引用类型
    • 集合存放的是多个对象的引用,对象本身还是放在堆内存中
    • 集合可以存放不同类型,不限数量的数据类型。定义集合变量时如果不指定数据类型,则默认数据类型为Object

    数组和集合的比较

    • 针对Java中的数组定长,Java提出了集合框架,实现了一种变长存储数据的容器—集合

    • 数组不是面向对象的,存在明显的缺陷,集合弥补了数组的缺点,比数组更灵活更实用,而且不同的集合框架类可适用不同场合。如下:

      • 数组能存放基本数据类型和对象,而集合类存放的都是对象的引用,而非对象本身
      • 数组容量固定无法动态改变,集合类容量动态改变
      • 数组无法判断其中实际存有多少元素,length只告诉了数组的容量,而集合的size()可以确切知道元素的个数
      • 集合有多种实现方式和不同适用场合,不像数组仅采用顺序表方式
      • 集合以类的形式存在,具有封装、继承、多态等类的特性,通过简单的方法和属性即可 实现各种复杂操作,大大提高了软件的开发效率
    • Iterator迭代器

    • Iterator迭代器:走访器,可以理解为集合中元素的指针

    • 它是Java集合的顶层接口(不包括map系列的集合,Map接口是map系列集合的顶层接口)

    public interface Iterator<E> {
        boolean hasNext();  //判断是否有后续元素
      E next();// 指针向后移动,同时返回指向的数据
        default void remove() {//  删除指针所指向的元素
            throw new UnsupportedOperationException("remove");
      }
     //使用lambda表达式的方式遍历所有元素
        default void forEachRemaining(Consumer<? super E> action) {
            Objects.requireNonNull(action);
            while (hasNext())
                action.accept(next());
        }
    
    // Iterable接口用以表示实现类是可以迭代的
    Iterator<T> iterator();
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15

    顶级接口Collection

    •  无序、允许重复
      
      • 1
    • public interface Collection extends Iterable一般说Collection是集合框架的顶级接口,但是事实上并不是顶级接口

    • 提供的方法:

    • int size(); 获取集合中的元素个数 区分容积和元素个数

    • boolean isEmpty()判断集合中的元素个数是否为0
      ​ 注意:只判断是否没有元素,但是并不判断集合对象是否为null

    • boolean contains(Object o)用于判断集合中是否包含对象

    • boolean add(Object o)用于向集合中追加元素o,成功true失败false

    • boolean remove(Object o)删除集合中的指定元素o,成功true失败false

    • Iterator iterator();获取迭代器,通过迭代器遍历集合中的每个元素

    • Object[] toArray();将集合转换为数组

    • void clear();删除集合中的所有元素

    public class Test2 {
    	public static void main(String[] args) {
    		Collection cc = new ArrayList();
    		cc.add(123);
    		cc.add("bbbb");
    		cc.add(new Date());
    		System.out.println(cc.size());
    		System.out.println(cc.isEmpty());
    		System.out.println(cc.contains("bbbb"));
    		System.out.println(cc.contains(new Date()));
    		System.out.println(cc.remove(123));
    		System.out.println(cc.size());
    	}
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
  • 相关阅读:
    matlab如何滤除低频尖峰脉冲
    MATLAB线性函数拟合并预测
    PostgreSQL安全
    入门力扣自学笔记118 C++ (题目编号1413)
    SpringBoot自定义注解+AOP+redis实现防接口幂等性重复提交,从概念到实战
    HIVE 表 DLL 基本操作(一)——第1关:Create/Alter/Drop 数据库
    hadoop生态圈面试精华之zookeeper(一)
    springcloud之gateway服务网关
    性能调优读书笔记(下篇)
    卷积计算公式 神经网络,卷积神经网络应用举例
  • 原文地址:https://blog.csdn.net/weixin_46437504/article/details/126555917