Collection(java)

Collection(Java)

List系列集合

添加的元素是有序,可重复,有索引

set系列集合

添加的元素是无序,不重复,无索引

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()返回集合中元素的个数/集合的长度

Collection是一个接口,我们不能直接创建对象

所以需要用到实现类的对象

比如:ArrayList

代码实现

import java.util.ArrayList;
import java.util.Collection;

public class CollectionDemo {
    public static void main(String[] args) {
        Collection<String> coll = new ArrayList<>();
        //添加元素
        //细节1:如果要在List系列集合中添加数据,那么方法永远返回true,因为List系列是允许元素重复的
        //细节2:如果要在set系列集合中添加数据,如果当前添加的元素不存在,方法返回true。表示添加成功
        //但是如果数据元素已经存在,方法但会false,表示数据天津爱失败
        coll.add("aaaa");
        coll.add("bbbb");
        coll.add("cccc");
        System.out.println(coll);

//        //清除数据
//        coll.clear();
//        System.out.println(coll);

        //删除元素,根据对象删除
        //方法会有一个boolean类型的返回值,如果删除成功返回true,如果删除失败(元素不存在)返回false
        coll.remove("aaaa");
        System.out.println(coll);

        //判断元素是否包含
        //细节:底层中是依赖equals方法进行判断是否存在的
        //所以,如果集合中存储的是自定义对象,也想通过contains方法来判断是否包含,那么在JavaBean类中需要重写equals方法
        boolean result1 = coll.contains("aaaa");
        boolean result2 = coll.contains("bbbb");
        System.out.println(result1);
        System.out.println(result2);

        //判断集合是否为空
        boolean result3 = coll.isEmpty();
        System.out.println(result3);

        //获取集合长度
        int size = coll.size();
        System.out.println(size);

        //清除数据
        coll.clear();

        //判断集合是否为空
        boolean result4 = coll.isEmpty();
        System.out.println(result4);

        //获取集合长度
        int size1 = coll.size();
        System.out.println(size1);
    }
}

Collection方法

Collection的遍历方式

迭代器遍历

迭代器不依赖索引

迭代器在java中的类时Iterator迭代器是集合专用的遍历方式

Collection集合获取迭代器

方法名称说明
Iterator<E> iterator返回迭代器对象,默认指向当前集合的0索引

Iterator中常用方法

方法名称说明
boolean hasNext()判断当前位置是否有元素,有元素返回true,没有元素返回false
E next()获取当前位置的元素,并将迭代器对象移向下一个位置

代码演示

import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;

public class CollectionDemo {
    public static void main(String[] args) {
        //创建对象并添加元素
        Collection<String> coll = new ArrayList<>();

        coll.add("aaa");
        coll.add("bbb");
        coll.add("ccc");
        coll.add("ddd");
        coll.add("fff");

        //获取迭代器对象
        //迭代器就好比是一个箭头,默认指向集合的0索引处
        Iterator<String> it= coll.iterator();
        //利用循环不断地获取集合中的每一个元素
        while (it.hasNext()){
            //next方法的两种事情,获取元素并移动指针
            String str = it.next();
            System.out.println(str);
        }
    }
}

Collection 迭代器遍历

细节

  1. 当指针已经指向最后一个元素后面的一个位置,再次调用next()方法获取对象的话会报错NoSuchElementException
  2. 迭代器遍历完毕,指针不会复位,如果需要重写遍历集合,就需要在再次创建一个迭代器对象
  3. 循环中只能用一次next()方法
  4. 迭代器遍历时,不能用集合的方法进行增加或者删除,但是可以用迭代器的remove()方法进行删除

增强for遍历

  • 增强for的底层就是迭代器,为了简化迭代器的代码书写
  • 它是JDK5以后出现的,其内部原理就是Iterator迭代器
  • 所有的单列集合和数组才能用增强for进行遍历

格式

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

代码演示

import java.util.ArrayList;
import java.util.Collection;

public class CollectionDemo {
    public static void main(String[] args) {
        //创建对象并添加元素
        Collection<String> coll = new ArrayList<>();

        coll.add("aaa");
        coll.add("bbb");
        coll.add("ccc");
        coll.add("ddd");
        coll.add("fff");

        //增强for进行遍历
        //注意点:
        //s就是一个第三方变量,在循环的过程中依次表示集合中的每一个数据
        for (String s : coll) {
            System.out.println(s);
        }
    }
}

Collection 增强for遍历

细节

  • 修改增强for中的变量,不会改变集合中原本的数据

    for (String s : coll) {
        s = "q";
    }
    

    循环结束在输出coll,此时输出结果还是原先的内容

lambda表达式遍历

方法名称说明
default void forEach(Consumer<? super T> action):结合Lambda遍历集合

代码展示

import java.util.ArrayList;
import java.util.Collection;

public class CollectionDemo {
    public static void main(String[] args) {
        //创建对象并添加元素
        Collection<String> coll = new ArrayList<>();
        coll.add("aaa");
        coll.add("bbb");
        coll.add("ccc");
        coll.add("ddd");
        coll.add("fff");

        //lambda表达式
        coll.forEach(s-> System.out.println(s));
    }
}

Collection lambda表达式

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

都不会的鲨

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值