单列集合顶层接口Collection

简介: 单列集合顶层接口Collection

一、单列集合顶层接口Collection

  • Collection是单列集合的祖宗接口,它的功能是全部单列集合都可以继承使用的。
方法名称 说明
public boolean add(E e) 把给定的对象添加到当前集命中
public void clear() 清空集合中所有的元素
public boolean remove(E e) 把给定的对象在当前集合中删除
public boolean contains(object obj) 判断当前集合中是否包含给定的对象
public boolean isEmpty() 判断当前集合是否为空
public int size() 返回集合中元素的个数/集合的长度
  • List 系列集合:添加的元素是有序、可重复、有索引
  • Set 系列集合:添加的元素是无序、不重复、无索引

二、Collection 的遍历方式

2.1 迭代器遍历

  • 迭代器在ava中的类是Iterator,迭代器是集合专用的遍历方式。
  • Collection集合获取迭代器
方法名称 说明
Iterator<E> iterator() 返回迭代器对象,默认指向当前集合的0索引
  • Iterator中的常用方法
方法名称 说明
boolean hasNext() 判断当前位置是否有元素,有元素返回true,没有元素返回false
E next() 获取当前位置的元素,并将迭代器对象移向下一个位置
public static void main(String[] args) {
        //创建集合
        Collection<String> coll = new ArrayList<>();
        coll.add("aaa");
        coll.add("bbb");
        coll.add("ccc");
        coll.add("ddd");
        //迭代器遍历
        Iterator<String> it = coll.iterator();
        while (it.hasNext()) {
            String str = it.next();
            System.out.println(str);
        }
    }
  • 细节:
  • 1.当迭代器遍历完集合时,再强行访问没有元素的位置,会报错NoSuchElementException
  • 2.迭代器遍历完毕,指针不会复位
  • 3.循环中只能用一次next方法
  • 4.迭代器遍历时,不能用集合的方法进行增加或者删除

2.2 增强for遍历

  • 增强for的底层就是迭代器,为了简化迭代器的代码书写的
  • 它是JDK5之后出现的,其内部原理就是一个Iterator迭代器
  • 所有的单列集合和数组才能用增强for进行遍历
public static void main(String[] args) {
        //创建集合
        Collection<String> coll = new ArrayList<>();
        coll.add("aaa");
        coll.add("bbb");
        coll.add("ccc");
        coll.add("ddd");
        System.out.println("----------增强for----------");
        for (String s : coll) {
            System.out.println(s);
        }
    }
  • 细节
  • 修改增强for中的变量,不会改变集合中原本的数据。

2.3 Lambda表达式遍历

  • 得益于JDK8开始的新技术Lambda表达式,提供了一种更简单、更直接的遍历集合的方式。
  • 匿名内部类方式
public static void main(String[] args) {
        //创建集合
        Collection<String> coll = new ArrayList<>();
        coll.add("aaa");
        coll.add("bbb");
        coll.add("ccc");
        coll.add("ddd");
        System.out.println("----------匿名内部类方式----------");
        coll.forEach(new Consumer<String>() {
            @Override
            public void accept(String s) {
                System.out.println(s);
            }
        });
    }
  • 底层原理
@Override
    public void forEach(Consumer<? super E> action) {
        Objects.requireNonNull(action);
        final int expectedModCount = modCount;
        @SuppressWarnings("unchecked")
        final E[] elementData = (E[]) this.elementData;
        final int size = this.size;
        for (int i=0; modCount == expectedModCount && i < size; i++) {
            action.accept(elementData[i]);
        }
        if (modCount != expectedModCount) {
            throw new ConcurrentModificationException();
        }
    }
  • forEach会对集合进行遍历,将得到的集合元素传给accep()方法,方法内的参数就是集合中的元素
public static void main(String[] args) {
        //创建集合
        Collection<String> coll = new ArrayList<>();
        coll.add("aaa");
        coll.add("bbb");
        coll.add("ccc");
        coll.add("ddd");
        System.out.println("----------Lambda方式----------");
        coll.forEach(s-> System.out.println(s));
    }

三、List集合的特有方法

  • Collection的方法List都继承了
  • Lst集合因为有索引,所以多了很多索引操作的方法.
方法名称 说明
void add(int index,E element) 在此集合中的位置插入指定的元素
E remove(int index) 删除指定索引处的元素,返回被修改的元素
E set(int index,E element) 修改指定索引处的元素,返回被修改的元素
E get(int index) 返回指定索引处的元素


相关文章
|
13天前
|
数据采集 人工智能 安全
|
8天前
|
编解码 人工智能 自然语言处理
⚽阿里云百炼通义万相 2.6 视频生成玩法手册
通义万相Wan 2.6是全球首个支持角色扮演的AI视频生成模型,可基于参考视频形象与音色生成多角色合拍、多镜头叙事的15秒长视频,实现声画同步、智能分镜,适用于影视创作、营销展示等场景。
666 4
|
8天前
|
机器学习/深度学习 人工智能 前端开发
构建AI智能体:七十、小树成林,聚沙成塔:随机森林与大模型的协同进化
随机森林是一种基于决策树的集成学习算法,通过构建多棵决策树并结合它们的预测结果来提高准确性和稳定性。其核心思想包括两个随机性:Bootstrap采样(每棵树使用不同的训练子集)和特征随机选择(每棵树分裂时只考虑部分特征)。这种方法能有效处理大规模高维数据,避免过拟合,并评估特征重要性。随机森林的超参数如树的数量、最大深度等可通过网格搜索优化。该算法兼具强大预测能力和工程化优势,是机器学习中的常用基础模型。
350 164
|
7天前
|
机器学习/深度学习 自然语言处理 机器人
阿里云百炼大模型赋能|打造企业级电话智能体与智能呼叫中心完整方案
畅信达基于阿里云百炼大模型推出MVB2000V5智能呼叫中心方案,融合LLM与MRCP+WebSocket技术,实现语音识别率超95%、低延迟交互。通过电话智能体与座席助手协同,自动化处理80%咨询,降本增效显著,适配金融、电商、医疗等多行业场景。
359 155