集合

集合

遍历方式及并发修改异常

遍历方式:迭代器循环(list.iterator()),普通for循环(list.size()),增强for循环(E e : list)

并发修改异常:迭代器遍历时添加数据会抛出异常(删remove和改set不会)。解决办法:用普通for循环遍历。



(以下说明均可在Idea中用快捷键Ctrl+B 和 Alt+7中查询)

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) 返回指定索引处的元素

LinkedList 集合的特有功能
方法名 说明
void addFirst(E e) 在该列表开头插入指定的元素
void addLast(E e) 在指定的元素追加到此列表的末尾
E getFirst() 返回此列表中的第一个元素
E getLast() 返回此列表中的最后一个元素
E removeFirst() 从此列表中删除并返回第一个元素
E removeLast() 从此列表中删除并返回最后一个元素


Set 集合的特点

  • 元素存取无序
  • 没有索引,只能通过迭代器或者增强for循环遍历,不能用普通for循环遍历
  • 不能存储重复元素
HashSet集合的特点
  • 底层哈希表
  • 迭代顺序不保证
  • 没有索引,只能通过迭代器或者增强for循环遍历,不能用普通for循环遍历
  • 不能存储重复元素

注意:HashSet集合保证元素唯一性,必须重写 hashcode()equals() 方法!(快捷键Alt+Insert)

LinkedHashSet 集合特点
  • 底层哈希表和链表,迭代次序可预测
  • 链表保证元素有序,哈希表保证元素唯一
TreeSet
  • 元素有序(自然排序、比较器排序)
  • 没有索引,只能通过迭代器或者增强for循环遍历,不能用普通for循环遍历
  • 不能存储重复元素
自然排序

让元素所属的类实现 Comparable 接口,重写 compareTo(T t) 方法

return 正数 this排在t后
return 负数 this排在t前
return 0 不存储
比较器排序

让集合构造方法接收Comparator的实现类对象(匿名内部类创建对象),重写compare(T o1,T o2)方法,与自然排序相比 o1是this , o2是t




Map

方法名 说明
V put(K key, V value) 添加元素
V remove(Object key) 根据键删除键值对元素
void clear() 移除所有的键值对元素
boolean containsKey(Object key) 判断集合是否包含指定的键
boolean containsValue(Object value) 判断集合是否包含指定的值
boolean isEmpty() 判断集合是否为空
int size() 集合的长度,也就是集合中键值对的个数

获取功能

方法名 说明
V get(Object key) 根据键获取值
Set keySet() 获取所有键的集合
Collection values() 获取所有值的集合
Set<Map.Entry<K, V>> entrySet() 获取所有键值对对象的集合

遍历方式

  • 方式一:

    • 获取所有键的集合 Set keySet()
    • 根据键去找值 get(Object key)
  • 方式二:

    • 获取所有键值对对象集合 Set<Map.Entry<K, V>> entrySet()

      //引用类型 Map.Entry
      for (Map.Entry m : entries){
          ……
      }
      
    • 用 getKey() 得到键,用 getValue() 得到值

注意:键值对的键值为自定义类型(如Student类)需重写 hashcode()equals() 方法

posted @ 2022-01-04 14:07  郑国荣  阅读(30)  评论(0编辑  收藏  举报