Collection集合

1. 概述

集合框架图:
Collection集合 - 图1
Collection集合 - 图2


2. Iterator迭代器

迭代器,即Collection集合元素的通用获取方式。在取元素之前先要判断集合中有没有元素,如果有,就把这个元素取出来,继续判断,如果还有就继续取,直到取完为止(就跟增强for循环一样)。

一般更改删除集合元素,使用Iterator迭代器

  1. //迭代器遍历
  2. Iterator<String> it = collection.iterator();
  3. while (it.hasNext()){ //hasNext(),判断有没有下一个元素
  4. String i = it.next(); //next(),获取下一个元素,指针移至下一位
  5. System.out.println(i);
  6. }
  7. System.out.println("====================");

3. 增强for循环

增强for循环是用来遍历数组和集合

遍历集合:

  1. //增强for循环遍历
  2. for (String s : collection){
  3. System.out.println(s);
  4. }

List集合

Collection集合 - 图3

1. 概述

List接口:

  • 父接口:Collection,Iterable
  • 有序的集合(存储和取出的元素顺序相同)
  • 允许存储重复的元素(包括null)
  • 有索引,可以使用普通的for循环遍历
  • 常用实现类:

    1. ArrayList:

      • 底层是动态数组实现
      • 查询
      • 增删
      • 线程不安全
    2. LinkedList:

      • 底层是链表实现
      • 查询
      • 增删
    3. Vector

      • 线程安全

2. Collections类

emptyList():该方法会创建一个空的 List 集合, 但是这个 List 不能进行增删改的操作

作用:

  1. 减少内存开销
  2. 返回一个 size = 0 的 List,不需要校验是否为 null

Set集合

Collection集合 - 图4

1. 概述

Set接口:

  • 父接口:Collection,Iterable
  • 无序
  • 不允许存储重复元素
  • 没有索引(不能使用普通的for循环遍历)
  • 最多只能包含一个null元素
  • 常用实现类:
    • HashSet
      • 底层是哈希表+红黑树实现
      • 查询速度快
      • 存取无序
  • LinkedHashSet:
    • 底层是哈希表+链表实现
    • 存取有序
  • TreeSet:
    • 底层是二叉树实现
    • 一般用于排序

2. 遍历Set集合

遍历Set集合,有两种方法:


  1. 迭代器遍历

    1. Iterator<String> it = set.iterator(); //创建迭代器
    2. while(it.hasNext()){ // while循环,hasNext(),判断还有没有下一个元素
    3. String key = it.next(); // next()取出集合中的下一个元素
    4. }

  2. 增强for循环

    1. for(String key : map.keySet()){
    2. Interger value = map.get(key);
    3. }