剖析Java 集合框架第一弹

2020-11-22  本文已影响0人  李元霸抢貂蝉

序言

    写文章,这个想法我觉得很多人都有,我也很早就有,但是一直拖着,基于各种考虑:文笔不好啦,没有素材啦,没有深度啦。不管怎样,今天终于迈出了第一步,值得庆祝。
    主要分析生活中的感悟和自己专业技术(java方向),前期可能是以技术文章为主,毕竟对于新手来说,写生活感悟不比高考写命题作文简单。
    希望能分享我的所学所感,促使自己热爱生活,稳步提升。经常加班到深夜,走在寂静无人的路上,想的最多的就是活着是为了什么,这么拼,最后得到什么,为了什么。现在还没有确切答案,但是我希望我能热爱生活!
话不多说,进入今天的分享主题,java集合框架

1. 集合概况

下图展示了Java容器类库关系图 image

数据结构本质就是数组链表

无序性是指存储的数据在底层数组中并非按照数组索引的顺序添加 ,而是根据数据的哈希值决定的。
不可重复性是指添加的元素按照 equals()判断时 ,返回 false,需要同时重写 equals()方法和 HashCode()方法。

Java容器类类库的用途是"保存对象",并将其划分为两个不同的概念:
Collecton 一个独立元素的序列

线程安全的集合类

ArraylistLinkedListHashMapHashSetTreeSetTreeMapPriorityQueue 都不是线程安全的。java.util.concurrent 包中提供了很多并发容器供你使用:

2. 如何选用集合

以下基于《Java编程思想》第四版第17章 容器深入研究 总结

3. 集合容器中的设计模式

迭代器模式

Collection 继承了 Iterable 接口,其中的 iterator() 方法能够产生一个 Iterator 对象,通过这个对象就可以迭代遍历 Collection 中的元素。

public interface Iterator<E> {
    //集合中是否还有元素
    boolean hasNext();
    //获得集合中的下一个元素
    E next();
    ......
}

从 JDK 1.5 之后可以使用 foreach 方法来遍历实现了 Iterable 接口的聚合对象。

List<String> list = new ArrayList<>();
for (String item : list) {
    System.out.println(item);
}

适配器模式

java.util.Arrays#asList() 可以把数组类型转换为 List 类型。

@SafeVarargs
public static <T> List<T> asList(T... a)
Integer[] arr = {1, 2, 3};
List list = Arrays.asList(arr);
//也可以使用以下方式调用 asList():
List list = Arrays.asList(1, 2, 3);

应该注意的是 asList() 的参数为泛型的可变长参数,不能使用基本类型数组作为参数,只能使用相应的包装类型数组。

感谢看官看完!本来想挨个分析源码,还是太年轻。且不说花了多长时间,限于篇幅,码字,排版,编辑...真是令人头大

磕磕绊绊写完了基本篇,下篇源码分析,敬请期待!

ps

集合框架脑图 image
上一篇 下一篇

猜你喜欢

热点阅读