专注于 JetBrains IDEA 全家桶,永久激活,教程
持续更新 PyCharm,IDEA,WebStorm,PhpStorm,DataGrip,RubyMine,CLion,AppCode 永久激活教程

Collection集合方法实例演示

Collection

概述

Collection 是所有容器集合的父类接口。Collection 表示一组对象,这些对象也称为 collection 的元素。一些 collection 允许有重复的元素,而另一些则不允许。一些 collection 是有序的,而另一些则是无序的。JDK 不提供此接口的任何直接 实现:它提供更具体的子接口(如 Set 和 List)实现。此接口通常用来传递 collection,并在需要最大普遍性的地方操作这些 collection。

它还是两个常用集合List&Set的父类接口

下面介绍常用方法示例

源码概述

public interface Collection<E> extends Iterable<E> {

    //返回集合中的元素数量,返回值为int类型
    int size();

    //判断集合元素是否为空,空则true,否则为false
    boolean isEmpty();

    //判断是否包含指定元素,包含为true,否则false
    boolean contains(Object o);

    //返回一个迭代器接口,可以进行遍历集合
    Iterator<E> iterator();

    //将集合转换为一个数组对象
    Object[] toArray();

    //利用参数里的泛型数组对应集合的长度,根据数组参数比较集合参数,长度超出则打印null
    <T> T[] toArray(T[] a);

    //往集合里添加数据,参数为任意类型,返回值为布尔
    boolean add(E e);

    //根据参数指定元素,如果元素对应集合里的数据返回true,否则false
    boolean containsAll(Collection<?> c);

    //根据集合参数添加多个值
    boolean addAll(Collection<? extends E> c);

    //根据集合参数添加多个数据进行批量删除
    boolean removeAll(Collection<?> c);

    //根据Predicate过滤接口参数进行筛选
    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;
    }

    //清除集合里的元素
    void clear();

    //比较此 collection 与指定对象是否相等。
    boolean equals(Object o);

    //返回当前集合的哈希值
    int hashCode();

    //用于遍历和分割“源”元素的对象。
    @Override
    default Spliterator<E> spliterator() {
        return Spliterators.spliterator(this, 0);
    }

    //stream:返回一个stream流对象,可根据其方法操作集合
    default Stream<E> stream() {
        return StreamSupport.stream(spliterator(), false);
    }

    //parallelStream:和stream方法一样,parallelStream支持顺序流,线程不安全
    default Stream<E> parallelStream() {
        return StreamSupport.stream(spliterator(), true);
    }
}

代码演示

//这里创建一个集合
//由于这是个接口不能直接实例化,所以new实现类来演示
Collection<Object> collection = new ArrayList<>();
collection.add(233); //测试添加一条数据

size方法
int size = collection.size(); //获取集合的长度,也就是元素个数
System.out.println(size);//打印结果显示为1

isEmpty方法
boolean empty = collection.isEmpty();//判断集合元素是否为空,空则true,否则为false
System.out.println(empty);//集合为空打印为true 

contains方法
boolean contains = collection.contains("Bear");//判断是否包含指定元素,包含为true,否则false
System.out.println(contains);//不包含Bear字符,结果为false

iterator
  Iterator<Object> iterator = collection.iterator();// 返回一个迭代器接口
    while(iterator.hasNext()) { //使用迭代器遍历集合数据
        Object next = iterator.next();
        System.out.println(next);//遍历集合中的元素
    }

toArray:无参
 Object[] objects = collection.toArray();//转换为一个数组
    System.out.println(objects[0]);//获取打印第0号索引值
    for (Object object : objects) {//使用增强for循环遍历数组
        System.out.println(object);
    }

toArray:有参
//利用参数里的对象集合对应Collection集合的长度,根据参数指定返回长度,长度超出则打印null
Object[] toArray = collection.toArray(new Object[]{233,"bear"});//集合里没有"bear"字段,打印第二个值显示为null
for (Object o : toArray) {
    System.out.println(o);//超出Collection集合元素的长度,只显示233
}

add方法
System.out.println(collection.add(123));//往集合里添加数据,任意类型
System.out.println(collection.add("this is a add method"));//往集合里添加数据,字符串类型
System.out.println(collection.add('F'));//往集合里添加数据,char字符类型

remove方法
boolean remove = collection.remove(233);//移除指定的元素
System.out.println(remove);//打印为布尔值

containsAll方法
Collection<Object> obj = new ArrayList<>();
obj.add(233);
boolean b = collection.containsAll(obj);//根据新集合参数对应初始集合里的数据,对应则返回true,否则false
System.out.println(b);//两个集合数据对应,返回为true

addAll方法
Collection<Object> list = new ArrayList<>();//创建一个新集合
list.add(222);
list.add(233);
boolean addAll = collection.addAll(list);//根据集合参数添加多个值
System.out.println(addAll);//返回为true
System.out.println(collection);//打印集合内容

removeAll方法
Collection<Object> rem = new ArrayList<>();//创建一个新集合。批量移除集合元素
rem.add(222);//添加需要移除的元素
rem.add(233);
boolean removeAll = collection.removeAll(rem); //removeAll:根据集合参数添加多个数据进行批量删除
System.out.println(removeAll);

removeIf方法
//创建一个Person实体类
public class Person {
    private Integer age;
    public Person(Integer age) {
        this.age = age;
    }
    public Integer getAge() {
        return age;
    }
    public void setAge(Integer age) {
        this.age = age;
    }
    @Override
    public String toString() {
        return "Person{" +
                "age=" + age +
                '}';
    }
}
-------------------- 方法使用 ----------------------
Collection<Person> coo = new ArrayList<Person>();//创建一个新集合,泛型为Person对象
coo.add(new Person(18));//new一个匿名Person对象
coo.add(new Person(19));
coo.removeIf(new Predicate<Person>() {
    @Override
    public boolean test(Person person) {  //重写Predicate接口的test方法
        return person.getAge() <10; //筛选掉对象Person对象年龄小于10的数据,不打印筛选结果
    }
});
System.out.println(coo);//打印结果

-----------------------------------------------------------
//lambda简便格式
coo.removeIf(
    person -> person.getAge() >10 //筛选掉对象Person对象年龄大于10的数据
);
System.out.println(coo);//打印结果

retainAll
Collection<Object> co = new ArrayList<>();
co.add(233);
co.add("Bear");//collection不存在这个值,所以不会打印
collection.retainAll(co); //这里使用旧集合调用retinAll方法,取得两个集合的交集,输出打印相同的数值
System.out.println(collection);

clear方法
//clear:清除集合所有数据
collection.clear();
System.out.println(collection);//清除过后则获取不到集合里的值

equals方法
Collection<Object> objects = new ArrayList<>();
objects.add(399); //比较的内容
objects.add("Bear"); //比较的内容
boolean equals = collection.equals(objects);//比较两个对象是否相同,返回值为布尔
System.out.println(equals);

hashCode方法
//hashCode:返回这个集合的哈希值
int Code = collection.hashCode();
System.out.println(Code);

spliterator方法
//spliterator:用于分割和遍历集合
Spliterator<Object> spliterator = collection.spliterator();//使用collection集合调用方法
System.out.println(spliterator.estimateSize());//获取集合的长度
spliterator.forEachRemaining(System.out::println);//遍历集合的数据

stream方法
//stream:返回一个stream流对象,可根据其方法操作集合
Stream<Object> stream = collection.stream();
stream.forEach(System.out::println);//使用forEach遍历集合元素

parallelStream方法
//parallelStream:和stream方法一样,parallelStream支持顺序流,线程不安全
Stream<Object> parallelStream = collection.parallelStream();
parallelStream.forEach(System.out :: println);

文章永久链接:https://tech.souyunku.com/33837

未经允许不得转载:搜云库技术团队 » Collection集合方法实例演示

JetBrains 全家桶,激活、破解、教程

提供 JetBrains 全家桶激活码、注册码、破解补丁下载及详细激活教程,支持 IntelliJ IDEA、PyCharm、WebStorm 等工具的永久激活。无论是破解教程,还是最新激活码,均可免费获得,帮助开发者解决常见激活问题,确保轻松破解并快速使用 JetBrains 软件。获取免费的破解补丁和激活码,快速解决激活难题,全面覆盖 2024/2025 版本!

联系我们联系我们