前言
出去面试的时候,对java的集合框架考察的知识点还是蛮多的。除了基础的集合常见API使用,对集合底层的实现原理以及数据结构等也有很多考察方面。而自己对这方面知之甚少,特地抽空进行研究和学习一下。
为什么要有集合
提到集合就不得不提一下数组,好多集合底层都是依赖于数组的实现。数组一旦初始化后,长度就确定了,存储数据对象不能达到动态扩展,其次数组存储元素不便于对数组进行添加、修改、删除操作,而且数组可以存储重复元素。这个时候集合对作用显现出来了。集合分为Collection和Map两种体系。下面先介绍Collection的集合类的继承树如下图所示:

Collection接口是 (java.util.Collection)是Java集合类的顶级接口之一,整个集合框架就围绕一组标准接口而设计,本文研究的集合基于JDK8的实现,下面将会进行多个集合类方法使用和主要方法源码分析,以作为后续出去面试的参考资料。
Collection方法接口介绍
Collection 接口有 3 种子类型集合: List、Set 和 Queue,再下面是一些抽象类,最后是具体实现类,常用的有 ArrayList、LinkedList、HashSet、LinkedHashSet、ArrayBlockingQueue等,下面是Collection的所有方法。

这些方法即可以操作Set集合,也可以操作Queue和List集合,下面分别使用Collection集合接口的方法说明

想要系统学习相关java知识的还可以观看教学视频继续学习
下面是主要方法的演示:
@Test
@SuppressWarnings("all")
public void testCollection() {
// 创建Collection接口的实现
Collection collection = new ArrayList<>();
// 添加元素
collection.add("嘻嘻");
String src = "????";
collection.add(src);
System.out.println(collection);
// 创建Collection的实现
Collection<String> coll = new HashSet<>();
coll.add("?");
coll.add("?");
coll.add("?");
System.out.println(coll);
// 添加一个集合数据
collection.addAll(coll);
// 输出集合的长度
System.out.println(collection);
// 判断是否包含
System.out.println(collection.contains("?"));
// 移除元素
collection.remove("?");
// 添加对象
collection.add(new Person("张三", 23, 5000d));
// 当认为两个对象属性一致,相等时候,需重写hashCode 和 equals方法
System.out.println(collection.contains(new Person("张三", 23, 5000d)));
System.out.println("-------");
collection.add(null);
Collection<String> collection1 = new ArrayList<>();
collection1.add("嘻嘻");
collection1.add("?");
// 求两个集合的交集(只保留collection1存在的元素)
collection.retainAll(collection1);
System.out.println(collection);
// 清空元素
collection.clear();
System.out.println(collection);
}
java8新特性操作集合
使用lambda表达式遍历集合
java8为Collection的父接口(Iterable)提供了一个默认的Foreach方法,我们可以使用它进行集合遍历

使用java8的predicate操作集合

基于流操作集合
java8之后引入了Stream相关流操作java集合,通过流大大简化了对集合操作,下面是基于流的一些简单演示:


网友评论