1、概述算法
Java的集合体系,本质上是一个陈放数据的容器,像以前学过的数组也是陈放数据的容器,但在 Java 中数组的长度是固定的,使用起来没那么方便。集合提供了更增强大的功能,使用起来也更方便和快捷。集合体系中提供的方法的底层源代码采用的也是优秀的高效率算法,其余数据容器能操做的,集合都能操做,并且代码更加简洁,思路更加清晰,运行的效率更加高。所以,彻底掌握完集合。编程的技能会进一步提升。编程
2、集合体系数组
集合做为一个容器,能够存储多个元素,可是因为数据结构的不一样,Java 提供了多种集合类,将集合类中共性的功能不断向上抽取,最终造成了集合体系结构。安全
Java中集合体系的关系图:数据结构
Collection:多线程
Map:ide
3、Collection体系性能
一、Collection测试
二、Listspa
存储特色:
重要实现类:
三、LinkedList
数据结构:
体系机构图:
四、ArrayList
数据结构
体系结构图
ArrayList VS LinkedList
ArrayList VS Vector
ArrayList 与 LinkedList 性能测试
咱们先来写下面一段测试代码:
/** * 自测下ArrayList与LinkedList在本地的机器上的性能 * * 主要是验证 LinkedList是否是全部数据都是删除和修改最快 * */ public class Topic1 { public static void main(String[] args) { List<Integer> list1 = new ArrayList<>(); long start = System.currentTimeMillis(); for (int i=0;i<=10000;i++){ list1.add(i); } long end = System.currentTimeMillis(); System.out.println("arraylist time:" + (end - start)); List<Integer> list2 = new LinkedList<>(); long start1 = System.currentTimeMillis(); for (int i=0;i<=10000;i++){ list2.add(i); } long end1 = System.currentTimeMillis(); System.out.println("linkedList time:" + (end1 - start1)); }
咱们分别测试往 ArrayList 和 LinkedList 中添加 1万、10万、80万、100万条数据,查看其执行时间,运行结果以下:
到80万条数据时,ArrayList 用时已经比 LinkedList 少,只不过这时时间还比较接近。
以上结果分别表明1万、10万、80万、100万条数据的测试结果,到100万条数据时,ArrayList 所用时间远远少于 LinkedList。
因此,咱们说LinkedList适合插入和删除比较频繁的场景是不许确的,和数据量的大小有关。
4、Set
存储特色:
重要实现类:
一、HashSet
数据结构:
体系结构图:
二、LinkedHashSet
数据结构:
体系结构图:
5、Map
重要实现类
Map体系结构图
未完待续。。。