Java中的集合父亲之collection使用和遍历方式--(单列集合顶级接口)

简介: collection:单列集合的祖宗,一次只能往集合里面添加一个元素

一、概念

collection:单列集合的祖宗,一次只能往集合里面添加一个元素

1.关系网图

红色:接口

蓝色:实现类


2.区别

List系列的集合:添加的元素是有序的、可重复的、有索引的

set系列反之:无序、不可重复、无索引的

名词解释:

有序:指存和取顺序一样。和大小排列等无关

可重复:元素可以重复相同

有索引:可以通过索引找到

二、代码例子

package bao;
import java.util.ArrayList;
import java.util.Collection;
public class Test {
    public static void main(String[] args) {
        //注意点:collection是一个接口,不能直接创建他的对象.现在为了更直观的学习,创建他实现类的对象来展示,比如ArrayList
        Collection<String> coll = new ArrayList<>();
//collection最常见的6个方法
        //1.添加元素
        //注意点:要往List系列添加元素,永远都是true,因为这个集合是允许元素重复的。而set就不一定了
        coll.add("小狗");
        coll.add("大狗");
        System.out.println(coll);//[小狗, 大狗]
        //2.删除
        //注意点:因为collection里面定义的是共性的方法,不能通过索引进行删除,只能通过元素的对象进行删除
        //删除元素存在则true,不存在则false
        coll.remove("大狗");
        System.out.println(coll);//[小狗]
        //3.判断元素是否存在
        //注意点:这个方法底层是通过equals来进行判断的。
        //如果这个集合new的是自定义对象,比如student这种,要进行重写里面的方法才能返回true。
        boolean bl = coll.contains("as");
        System.out.println(bl);//false
        //4.判断集合是否为空
        //底层就是判断这个集合元素长度是否为0
        boolean is = coll.isEmpty();
        System.out.println(is);//false
        //5.获取集合的长度
        int size = coll.size();
        System.out.println(size);//1
        //6.清空
        coll.clear();
        System.out.println(coll);//[]
    }
}

运行结果:

[小狗, 大狗]

[小狗]

false

false

1

[]

------------------------------------------------------------------------------------------遍历方式------------------------------------------------------------------------------

使用场景选择:

1.在遍历的过程中需要删除元素------迭代器

2.仅仅想遍历可以选择增强for或者lambda

四、set迭代器遍历

1.为什么要用set迭代器遍历?

答:因为set集合里面是没有索引的,用不了for循环去遍历,只能用迭代器方式去遍历。

2.迭代器是什么?

答:迭代器是集合专用的遍历方式,不依赖索引进行遍历

3.迭代器注意事项

1.迭代器遍历完成,指针不会复位

2.循环中只能用一次next方法

3.迭代器遍历时,不能用集合的方式进行增加和删除

4.报错:NoSuchElementException

4.遍历完成后还想再进行二次遍历怎么办?

答:再创建一个迭代器去遍历

例子展示:

package bao;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;
public class Test {
    public static void main(String[] args) {
        Collection<String> coll = new ArrayList<>();
        //1.添加元素
        coll.add("霹雳火");
        coll.add("急先锋");
        //2.创建迭代器对象,迭代器就像一个箭头,默认初始值为0索引
        Iterator<String> it = coll.iterator();
        //3.开始进行循环获取元素
        while (it.hasNext()){//判断元素是否存在,存在则执行下一步
            String next = it.next();//next获取元素并移动指针
            System.out.println(next);//霹雳火 急先锋
        }
        //迭代器总结:创建iterator方法,通过while循环,用next进行遍历
        //二、错误示范
        //1.遍历完成后再调用一次next方法,会报错NoSuchElementException异常
        //直白解释:都遍历完成了,还要再next指向后一位没有元素的空位置,肯定会报错的
        String next = it.next();
        System.out.println(next);//报错:NoSuchElementException
    }
}

运行结果:(这里是把错误示范注释掉了,要不然会报错)

霹雳火

急先锋

五、增强for遍历(迭代器升级版)

1.增强for遍历底层就是迭代器,为了简化迭代器书写而产生的

2.他是JDK5以后才出现的,其内部原理就是一个Iterator迭代器

3.所有的单列集合和数组才能使用

格式:

for(元素的数据类型  变量名:数组或者集合){

//打印输出

}

例子展示:

package bao;
import java.util.ArrayList;
import java.util.Collection;
public class Test {
    public static void main(String[] args) {
        Collection<String> coll = new ArrayList<>();
        //1.添加元素
        coll.add("霹雳火");
        coll.add("急先锋");
        //快捷键:集合变量名.for+回车键
        for (String s : coll) {
            System.out.println(s);
        }
    }
}

运行结果:

霹雳火

急先锋

六、lambda表达式遍历(超进化遍历)

package bao;
import java.util.ArrayList;
import java.util.Collection;
public class Test {
    public static void main(String[] args) {
        Collection<String> coll = new ArrayList<>();
        //1.添加元素
        coll.add("霹雳火");
        coll.add("急先锋");
        coll.forEach(s -> System.out.println(s));
        //快捷方式:1.coll.forEach,2.括号里面输入s+回车 3.打印输出变量s
    }
}

运行结果:

霹雳火

急先锋

目录
相关文章
|
3月前
|
Java 大数据 API
Java Stream API:现代集合处理与函数式编程
Java Stream API:现代集合处理与函数式编程
253 100
|
3月前
|
Java API 数据处理
Java Stream API:现代集合处理新方式
Java Stream API:现代集合处理新方式
286 101
|
3月前
|
算法 Java
50道java集合面试题
50道 java 集合面试题
|
2月前
|
存储 算法 安全
Java集合框架:理解类型多样性与限制
总之,在 Java 题材中正确地应对多样化与约束条件要求开发人员深入理解面向对象原则、范式编程思想以及JVM工作机理等核心知识点。通过精心设计与周密规划能够有效地利用 Java 高级特征打造出既健壮又灵活易维护系统软件产品。
97 7
|
3月前
|
算法 安全 Java
除了类,Java中的接口和方法也可以使用泛型吗?
除了类,Java中的接口和方法也可以使用泛型吗?
144 11
|
2月前
|
Java Go 开发工具
【Java】(9)抽象类、接口、内部的运用与作用分析,枚举类型的使用
抽象类必须使用abstract修饰符来修饰,抽象方法也必须使用abstract修饰符来修饰,抽象方法不能有方法体。抽象类不能被实例化,无法使用new关键字来调用抽象类的构造器创建抽象类的实例。抽象类可以包含成员变量、方法(普通方法和抽象方法都可以)、构造器、初始化块、内部类(接 口、枚举)5种成分。抽象类的构造器不能用于创建实例,主要是用于被其子类调用。抽象类中不一定包含抽象方法,但是有抽象方法的类必定是抽象类abstract static不能同时修饰一个方法。
212 1
|
3月前
|
存储 Java Go
对比Java学习Go——函数、集合和OOP
Go语言的函数支持声明与调用,具备多返回值、命名返回值等特性,结合`func`关键字与类型后置语法,使函数定义简洁直观。函数可作为一等公民传递、赋值或作为参数,支持匿名函数与闭包。Go通过组合与接口实现面向对象编程,结构体定义数据,方法定义行为,接口实现多态,体现了Go语言的简洁与高效设计。
|
存储 Java 测试技术
滚雪球学Java(56):探究Java中Collection接口,理解集合框架的实现原理
【6月更文挑战第10天】🏆本文收录于「滚雪球学Java」专栏,专业攻坚指数级提升,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家关注&&收藏&&订阅!持续更新中,up!up!up!!
171 2
滚雪球学Java(56):探究Java中Collection接口,理解集合框架的实现原理
|
存储 Java 索引
从零开始学习 Java:简单易懂的入门指南之Collection集合及list集合(二十一)
从零开始学习 Java:简单易懂的入门指南之Collection集合及list集合(二十一)
【零基础学Java】—Collection集合(三十八)
【零基础学Java】—Collection集合(三十八)