Java集合

一、集合体系

1.集合概念

对象的容器。
数组可以存基本类型和引用类型。集合只可以存引用类型。

2.集合体系集合

在这里插入图片描述

3.Collection常用方法

boolean add(E e)
void clear() 
boolean remove(E e)
boolean contains(Object o)
int size()
Iterator<E> iterator()返回一个迭代器

迭代器的方法
boolean hasNext() 有下一个元素
E next() 指向下一个元素并返回
remove()

Connection只是一个接口,并没有实现方法。

二、List集合

1.List接口

有序,有下标,不重复
迭代器 ListIterator extends Iterator
可以调用hasPrevious和previous方法向前遍历(需先将指针移到最后)

2.ArrayList集合

存储结构:名为elementData的动态数组。
初始化,可以使用无参和有参构造函数(参数为int 长度)
数据量为0时,长度为0,添加数据后,长度为10
扩容机制:

/**
 * 要分配的最大数组大小
 */
private static final int MAX_ARRAY_SIZE = Integer.MAX_VALUE - 8;

/**
 * ArrayList扩容的核心方法。
 */
private void grow(int minCapacity) {
    // oldCapacity为旧容量,newCapacity为新容量
    int oldCapacity = elementData.length;
    //将oldCapacity 右移一位,其效果相当于oldCapacity /2,
    //我们知道位运算的速度远远快于整除运算,整句运算式的结果就是将新容量更新为旧容量的1.5倍,
    int newCapacity = oldCapacity + (oldCapacity >> 1);
    //然后检查新容量是否大于最小需要容量,若还是小于最小需要容量,那么就把最小需要容量当作数组的新容量,
    if (newCapacity - minCapacity < 0)
        newCapacity = minCapacity;
   // 如果新容量大于 MAX_ARRAY_SIZE,进入(执行) `hugeCapacity()` 方法来比较 minCapacity 和 MAX_ARRAY_SIZE,
   //如果minCapacity大于最大容量,则新容量则为`Integer.MAX_VALUE`,否则,新容量大小则为 MAX_ARRAY_SIZE 即为 `Integer.MAX_VALUE - 8`。
    if (newCapacity - MAX_ARRAY_SIZE > 0)
        newCapacity = hugeCapacity(minCapacity);
    // minCapacity is usually close to size, so this is a win:
    elementData = Arrays.copyOf(elementData, newCapacity);
}

遍历集合

LinkedList集合

存储结构:双向链表
结点 E Node(Node prev,E e,Node next)

Vector集合

线程安全,数组

三、Set集合

1.Set接口

特点:(1)无序,没有下标 (2)不能重复

2.HashSet集合

存储结构:哈希表
存储过程:
(1)根据hashcode计算保存的位置,如果此位置为空,则直接保存,如果不为空则执行第二步。
(2)再执行equals方法,如果equals为true,则认为是重复;否则 ,形成链表。

3.TreeSet集合

四、Map集合

1.Map集合体系

目前需要了解的

2.Map接口

Map<K,V> 存键值对(映射)
键:无序,无下标,唯一
值:无序,无下标,不唯一

Map的常用方法

V put(K key,V value)Object get(Object key)V remove(K key)Set<K> keySet() 返回所有的键
Set<Map.Entry<K,V>> entrySet() 返回Map.EntrySet集合
boolean containsKey(K key) 是否有为key的键
boolean containsValue(V value) 是否有为value值

Map.Entry的方法
getKey(

3.HashMap

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值