Java集合相关内容

11

1.List

  • 特点:有序、有下标、元素可以重复
  • equals方法判断是否存在

2.List实现类

2.1 ArrayList

存储结构:数组

调用无参构造方法创建ArrayList,数组长度为0

当添加一个元素时,数组长度扩容为原来的1.5倍

空间不够,每次扩容都是原来的2倍

2.2 LinkedList

存储结构:双向链表

LinkedList包含两个属性first(指向第一个结点,last指向最后一个结点)

每个结点都是Node类型,属性包含item,next,prev

根据下标查找元素,判断下标的范围是在前半部分,还是在后半部分如果是前半部分从first开始,如果是后半部分,从last开始找。

2.3 Vector

存储结构:数组

JDK1.0 包含集合

线程安全,效率比较低

2.4 Stack

Vector的子类,存储结构:数组

先进后出 push入栈,pop出栈

2.5 Queue

是个接口

先进先出 offer 入队 poll出队

3. 泛型

类型参数化

3.1常见形式

泛型类:类名的后加上尖括号<>,里面写占位符。

  • 占位符的要求:使用一个大写字母来表示,有多个中间用逗号隔开,表示一个引用数据类型。
  • 创建泛型类对象的确定泛型类型

泛型接口:接口名的后加上尖括号<>,里面写占位符。

  • 子类实现泛型接口时,指定泛型的数据类型
  • 子类也可以是泛型类

泛型方法:在方法的返回值的前面,加上尖括号<>,里面写占位符。

3.2 使用泛型,泛型的限制

  • ? 泛型表示任意类型
  • ? extends Student 表示类型小于等于Student
  • ? super Student 表示类型大于等于Student

4.Set

特点:无序,无下标,元素不可以重复

5.Set实现类

HashSet:存储结构哈希表(数组+链表+红黑树)

重复依据:hashCode()和equals()

存储过程:

  • 根据hash值计算位置,如果此位置没有元素,直接放入
  • 如果这个位置铀元素,判断hash值是否相同,如果不相同,直接放入形成链表
  • 如果hash一样,在判断equals,如果equals为false,放入形成链表,如果为true,则认为是重复元素,不再放入。

5.1 HashSet

存储结构哈希表(数组+链表+红黑树)

  • 包含一个双向链表,保证顺序。

5.2 TreeSet

存储结构:红黑树(自平衡的二叉搜索树)

重复依据:Comparable接口中compareTo(),返回值是0则是重复元素。

  • 元素要求实现Comparable,或者创建集合时传递一个Comparator比较器。

6. Map

  • 存储数据是键值对,一个键一个值
  • 键不可以重复,值可以重复

7.Map实现类

7.1 HashMap

存储结构:哈希表(数组+链表+红黑树)

7.2 LinkedHashMap

哈希表(数组+链表+红黑树),继承了HashMap

  • 有一个双向链表维护顺序

7.3 TreeMap

存储结构:红黑树

7.4 HashTable

存储结构哈希表 (数组+链表)

  • JDK1.0 包含的集合
  • 线程安全,效率低

7.5 Properties

HashTable的子类