集合框架:Collection接口和Map接口

集合概述: 集合石java中提供的一种容器,可以用来存储多个数据。
集合和数组的区别:
1.数组的长度是固定的。集合的长度是可变的。
2.数组中存储的是同一类型的元素,可以存储任意类型数据。集合存储的都是引用数据类型。如果想存储基本类型数据需要存储对应的包装类型。
首先来介绍Collection接口
(值列出了常用的集合,并不是只有这些集合)
黑色表示Interface接口,白色表示Class
Collection接口
List
ArrayList
用法
ArrayList<数据类型> list = new ArrayList<数据类型>()
特点
底层数组
查询快,增删慢
有序
可以重复元素
方法
public boolean add(E e) :将指定的元素添加到此集合的尾部。
public E remove(int index) :移除此集合中指定位置上的元素。返回被删除的元素。
public E get(int index) :返回此集合中指定位置上的元素。返回获取的元素。
public int size() :返回此集合中的元素数。遍历集合时,可以控制索引范围,防止越界。
遍历
LinkedList
用法
LinkedList<数据类型> 集合名 = new LinkedList<数据类型>()
特点
底层是链表
速度快
有序
可以有重复元素
方法
- public void addFirst(E e):将指定元素插入此列表的开头。
- public void addLast(E e):将指定元素添加到此列表的结尾。
- public E getFirst():返回此列表的第一个元素。
- public E getLast():返回此列表的最后一个元素。
- public E removeFirst():移除并返回此列表的第一个元素。
- public E removeLast():移除并返回此列表的最后一个元素。
- public E pop():从此列表所表示的堆栈处弹出一个元素。相当于removeFirst()
- public void push(E e):将元素推入此列表所表示的堆栈。相当于addFirst()
- public boolean isEmpty():如果列表不包含元素,则返回true。
遍历
Vector
用法
Vector<数据类型> 集合名 = new Vector<>();
特点
有序
底层是数组
是同步的
方法
addElement(元素);
add(元素);
遍历
Set
HashSet
用法
HashSet<数据类型> 集合名 = new HashSet<数据类型>()
特点
1.无序
2.不可重复
3.没有索引,所以不能用普通for
4.底层是哈希表
方法
boolean add(E e)
如果此 set 中尚未包含指定元素,则添加指定元素。
void clear()
从此 set 中移除所有元素。
Object clone()
返回此 HashSet 实例的浅表副本:并没有复制这些元素本身。
boolean contains(Object o)
如果此 set 包含指定元素,则返回 true。
boolean isEmpty()
如果此 set 不包含任何元素,则返回 true。
Iterator iterator()
返回对此 set 中元素进行迭代的迭代器。
boolean remove(Object o)
如果指定元素存在于此 set 中,则将其移除。
int size()
返回此 set 中的元素的数量(set 的容量)。
遍历
如何保证元素不重复
先调用hashCode,如果hash值相同,再调用equals(内容)
如果存储的是自定义类
自定义类要重写hashCode和equals
LinkedHashSet
用法
LinkedHashSet<数据类型> 集合名 = new LinkedHashSet<数据类型>()
特点
1.有序
有序是双链表
2.不允许重复
3.没有索引,所以不能用普通for
方法
boolean add(E e)
如果此 set 中尚未包含指定元素,则添加指定元素。
void clear()
从此 set 中移除所有元素。
Object clone()
返回此 HashSet 实例的浅表副本:并没有复制这些元素本身。
boolean contains(Object o)
如果此 set 包含指定元素,则返回 true。
boolean isEmpty()
如果此 set 不包含任何元素,则返回 true。
Iterator iterator()
返回对此 set 中元素进行迭代的迭代器。
boolean remove(Object o)
如果指定元素存在于此 set 中,则将其移除。
int size()
返回此 set 中的元素的数量(set 的容量)。
遍历
然后是Map接口:

  • Collection中的集合,元素是孤立存在的(理解为单身),向集合中存储元素采用一个个元素的方式存储。
  • Map中的集合,元素是成对存在的(理解为夫妻)。每个元素由键与值两部分组成,通过键可以找对所对应的值。
  • Collection中的集合称为单列集合,Map中的集合称为双列集合。
  • 需要注意的是,Map中的集合不能包含重复的键,值可以重复;每个键只能对应一个值。
    Map接口
    HashMap
    用法
    HashMap<key的数据类型,value的数据类型> 集合名 = new HashMap<key的数据类型,value的数据类型>()
    特点
    1.底层是一个哈希表,速度快
    2.无序
    3.存储的元素形式是:key,value
    键值对
    4.key唯一,但是value可以重复
    方法
    - public V put(K key, V value): 把指定的键与指定的值添加到Map集合中。
    - public V remove(Object key): 把指定的键 所对应的键值对元素 在Map集合中删除,返回被删除元素的值。
    - public V get(Object key) 根据指定的键,在Map集合中获取对应的值。
    - boolean containsKey(Object key) 判断集合中是否包含指定的键。
    - public Set keySet(): 获取Map集合中所有的键,存储到Set集合中。
    遍历用的
    - public Set<Map.Entry<K,V>> entrySet(): 获取到Map集合中所有的键值对对象的集合(Set集合)。
    遍历用的
    遍历
    存储自定义类
    注意
    自定义类中重写hashCode和equals
    都写上
    在web阶段叫JavaBean
    在项目阶段叫pojo
    LinkedHashMap
    用法
    LinkedHashMap<key的数据类型,value的数据类型> 集合名 = new LinkedHashMap<key的数据类型,value的数据类型>()
    特点
    1.底层是一个哈希表+链表,速度快
    2.有序
    3.存储的元素形式是:key,value
    键值对
    4.key唯一,但是value可以重复
    方法
    - public V put(K key, V value): 把指定的键与指定的值添加到Map集合中。
    - public V remove(Object key): 把指定的键 所对应的键值对元素 在Map集合中删除,返回被删除元素的值。
    - public V get(Object key) 根据指定的键,在Map集合中获取对应的值。
    - boolean containsKey(Object key) 判断集合中是否包含指定的键。
    - public Set keySet(): 获取Map集合中所有的键,存储到Set集合中。
    遍历用的
    - public Set<Map.Entry<K,V>> entrySet(): 获取到Map集合中所有的键值对对象的集合(Set集合)。
    遍历用的
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值