集合
一、Collection 单列集合最顶层接口
- List 接口(有序,有索引,可以存储重复的元素)
- List体系的孩纸都有索引,可以存储重复的元素,存储的元素有序
- ArrayList 类 数组结构
- LinkedList 类 链表结构
- Set 接口(无序,无索引,元素唯一)
- 特点和List恰好相反,Set中存储的元素没有索引,而且存储的元素无序
二、Collection 中的成员方法
- boolean add(E e):添加元素
- boolean remove(Object o):从集合中移除元素
- void clear():清空集合中的元素
- boolean contains(Object o):判断集合中是否存在指定的元素
- boolean isEmpty():判断集合是否为空
- int size():集合的长度,也就是集合中元素的个数
三、集合的使用步骤:
- 创建集合对象
- 创建元素对象
- 添加元素
- 遍历集合
四、List特有的方法
- void add(int index,E element):在指定位置添加元素
- E remove(int index):删除指定位置的元素
- E set(int index,E element):修改指定位置的元素
- E get(int index):获取指定位置的元素
- ListIterator<E> listIterator():返回此列表元素的列表迭代器
五、ConcurrentModificationException(并发修改异常)
- 产生的原因:
- 迭代器依赖于集合而存在,在判断成功后,集合中添加了新的元素,而迭代器并不知道,所有就报错了。
- 解决
- A:迭代器遍历的时候,我可以通过迭代器修改集合中的元素
元素是跟在刚才迭代的元素后面的 - B:集合遍历的时候,我可以通过集合对象修改集合中的元素
元素是在最后添加的
- A:迭代器遍历的时候,我可以通过迭代器修改集合中的元素
六、集合三种遍历的方法
- 迭代器遍历
- 普通for循环遍历
- 增强for:是for循环的一种,底层是迭代器实现的
七、HashMap(类)
- 存储的是一对元素(key = value),HashMap中的key不能重复,并且key遵循唯一性原理依赖hashCode()和equals()方法
- 常用功能:
- 添加功能
- V put(K key, V value):添加一个key=value键值对,当key不重复的时候,返回的是null
当添加重复的key的时候,重复的key对应的新的value值回覆盖掉老的value值
并且返回原有(老的)value值
- V put(K key, V value):添加一个key=value键值对,当key不重复的时候,返回的是null
- 获取功能:
- V get(Object key) //根据key(键)获取Map中对应的value(值)
- int size() //返回Map中一共有多个键值对
- Set<K> keySet():将Map所有的key封装到一个Set的集合
- Collection<V> values():将Map中所有的value封装到一个Collection体系的集合
- 判断功能
- boolean containsKey(Object key) //是否包含指定的key
- boolean containsValue(Object value) //是否包含指定的value
- boolean isEmpty() //判断是Map否有键值对
- 删除功能:
- void clear() //清空Map中的所有键值对
- V remove(Object key) //根据键删除键值对,返回是value
- 添加功能
- 两种遍历方式、
- 利用keySet()方法遍历
- a.首先map调用keySet方法,将Map中所有的key封装到一个Set集合中
b.遍历这个装满key的Set集合
c.在遍历的过程中利用Map的get(key)方法获取对应的value
- a.首先map调用keySet方法,将Map中所有的key封装到一个Set集合中
- 利用entrySet()方法遍历
-
Set<Entry<String, String>> entrySet = hashMap.entrySet(); for (Entry<String, String> entry : entrySet) { String key = entry.getKey(); String value = entry.getValue(); System.out.println(key + "--" + value); }
- 利用keySet()方法遍历