Java集合框架-Collection接口的使用
Collection接口定义的方法:
public interface Collection<E> extends Iterable<E> {
int size();
boolean isEmpty();
boolean contains(Object o);
Iterator<E> iterator();
Object[] toArray();
<T> T[] toArray(T[] a);
boolean add(E e);
boolean remove(Object o);
boolean containsAll(Collection<?> c);
boolean addAll(Collection<? extends E> c);
boolean removeAll(Collection<?> c);
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;
}
boolean retainAll(Collection<?> c);
void clear();
boolean equals(Object o);
int hashCode();
@Override
default Spliterator<E> spliterator() {
return Spliterators.spliterator(this, 0);
}
default Stream<E> stream() {
return StreamSupport.stream(spliterator(), false);
}
default Stream<E> parallelStream() {
return StreamSupport.stream(spliterator(), true);
}
}
方法名 | 说明 |
---|---|
add(E e) | 确保此集合包含指定的元素(可选操作) |
addAll(Collection<? extends E> c) | 将指定集合中的所有元素添加到这个集合中 |
clear() | 移除集合中的所有元素 |
contains(Object o) | 判断集合是否包含Object o元素,true-包含 ;false-不包含 |
containsAll(Collection<?> c) | 判断集合是否包含Collection<?> c集合,true-包含;false-不包含 |
equals(Object o) | 将指定对象与集合比较,比较二者是否相等 |
hashCode() | 返回集合的哈希值 |
isEmpty() | 判断集合是否为空,true-空;false-非空 |
Iterator iterator() | 返回集合的元素迭代器 |
remove(Object o) | 如果元素在集合中存在,从集合中移除指定元素的实例。 |
removeAll(Collection<?> c) | 把指定集合Collection<?> c中的所有元素从集合中删除 |
retainAll(Collection<?> c) | 在集合中留下指定集合Collection<?> c中的所有元素(取交集) |
size() | 返回此集合中的元素的数目。 |
toArray() | 返回包含此集合中所有元素的数组。 |
toArray(T[] a) | 返回包含此集合中所有元素的数组;返回数组的运行时类型是指定的数组的运行时类型。 |
package com.jl.java.base.collection;
import org.junit.Test;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Date;
/**
* 一、集合框架的概述
* 1.集合、数组都是对多个数据进行存储操作的结构,简称Java容器。
* 说明:此时的存储,主要指的是内存层面的存储,不涉及到持久化的存储(.txt,.jpg,.avi,数据库中)
* 2.数组在存储多个数据方面的特点:
* 一旦初始化以后,数组长度确定了。
* 定义数组的时候是要确定数组的元素的类型,一旦定义好数组,其元素的类型就确定好了,只能操作指定类型的数据
*
* 3.数据在存储多个数据的确定
* 数组一旦初始化之后,其长度就不能修改。
* 数组提供的方法有限,不便于添加、删除、插入等操作。且无法直接获取已经存储的有效个数
* 获取数组中实际元素的个数的需求,数组没有现成的属性或方法可用
* 数组的存储结构时有序的,且可以重复的。对于无序的、不可重复的需求,不能满足。
* 4.Java集合类可以存储数量不等的多个对象,还可以保存具有映射关系的关联数组。
*
* 二、集合框架
* Collection接口:单列集合,用来存储一个个的对象
* List接口:存储有序的,可重复的数据。 -->动态数组
* ----ArrayList,LinkedList,Vector
* Set接口:存储无序的,不可重复的数据。 -->
* ----HashSet,LinkedHashSet,TreeSet
* Map接口:双列集合,用来存储一对(key-value)一对的数据
* -----HashMap,Hashtable,LinkedHashMap,TreeMap,Properties
* @author jiangl
* @version 1.0
* @date 2021/4/21 21:36
*/
public class CollectionTest {
@Test
public void test1(){
Collection coll = new ArrayList();
Collection colldel = new ArrayList();
//add(E e);将元素添加到集合中
coll.add("AA");
coll.add("BB");
coll.add(123);//自动装箱
coll.add(new Date());
//add(E e);将元素添加到集合中
colldel.add("AA");
colldel.add(new Date());
//size():获取添加的元素的个数
System.out.println(coll.size());
//addAll(Collection coll1):将coll1集合中的元素添加到当前的集合中
Collection coll1 = new ArrayList();
coll1.add(456);
coll1.add("CC");
coll.addAll(coll1);
System.out.println(coll.size());//6
System.out.println(coll);
//isEmpty():判断当前集合是否为空
System.out.println(coll.isEmpty());//false
//removeAll
coll.removeAll(colldel);
System.out.println(coll.size());//6
System.out.println(coll);
//clear():清空集合元素
coll.clear();
System.out.println(coll.isEmpty());//true
}
}