Java集合笔记

Java 600 浏览

请输入图片描述

关于Java集合(Java Collection)

本质是数据结构,用于存储数据。不同类型集合对应不同的数据结构,用于数据的不同组织形式。 由JAVA语言提供,开发人员直接使用,提升开发人员效率,同时Java集合有着非常好的性能。 对集合知识掌握地越好,越能更好地使用它们

Java集合只能存放对象,基本类型(int,float,double,long)无法放入集合中,必须使用各自的对象类型(Integer,Float,Double,Long)

Java容器支持各种类型对象的存储,这叫泛型。类型的确定其实是编译阶段进行(语法),编译期间通过集合的参数类型来进行类型强转。 集合可以存储任何类型,当然包括所有对象类型的父类Object。

Java对象都在堆中,容器并不包含对象的实际数据,而是保存指向各个对象的引用。

几个重要类/接口

java.util.Collection [I]
+--java.util.List [I]
   +--java.util.ArrayList [C]
   +--java.util.LinkedList [C]
   +--java.util.Vector [C]
      +--java.util.Stack [C]
+--java.util.Set [I]
   +--java.util.HashSet [C]
   +--java.util.SortedSet [I]
      +--java.util.TreeSet [C]

java.util.Map [I]
+--java.util.SortedMap [I]
   +--java.util.TreeMap [C]
+--java.util.Hashtable [C]
+--java.util.HashMap [C]
+--java.util.LinkedHashMap [C]
+--java.util.WeakHashMap [C]

以上为Java集合框架的一个大致情况(该层次情况很重要),主要分为List,Set以及Map三个接口。其中List和Set属于Collection,也就是说Collection与Map级别相同。其中List以及Set可以理解为集合,Map是一种关联容器,跟List、Set从大的概念上来看不相同。

两类集合:List和Set理解为Value的集合,Map理解为key和value的集合以及key映射到value

顺序容器,内部元素使用数组(Object数据,实现泛型)进行存储。理解size和capacity,capacity是容器容量,size为数组的当前长度。当size大于capacity,需要扩充数据大小然后将元素拷贝。capacity有一个初始值。

ArrayList非线程安全,Vector线程安全。非线程安全主要从性能角度考虑

内部实现为双向队列,所以可以作为栈或队列来使用。

不允许有重复元素存在

Map没有继承Collection接口。也就是说Map和Collection是2种不同的集合。Collection可以看作是(value)的集合,而Map可以看作是(key,value)的集合。 Map接口由Map的内容提供3种类型的集合视图,一组key集合,一组value集合,或者一组key-value映射关系的集合。

HashTable线程安全,HashMap非线程安全。 HashMap可以接受空(null)的key和value,而Hashtable则不行

关注微信公众号 "Kooola大数据" :) 聊人生 | 聊技术