1.1Collection 集合

  1. 集合:集合是Java提供的一种容器技术,可以用来存储多个数据
  2. 集合与数组的区别:
  • 数组的长度是固定的,集合的长度是可变的
  • 数组中存储的是同类型的元素,存储基本数据类型值,集合存储对象, 而且对象的类型可以不一致,在开发中一般当对象多的时候,使用集合进行存储。

1.2集合框架

    Java 提供了满足各种API,在使用这些 API 前,首先了解其继承与接口的操作架构, 才能了解何时才有哪个类,以及类之间如何彼此合作,从而灵活运用。 集合按其存储结构可以分为两大类:单列集合 java.util.Collection 和双列集合 java.util.Map

Collection:单列集合类的根接口,用于存储一系列符合某种规则的元素,它由两个重要 的子接口,分别是:java.util.List 和 java.util.Set。其中,List 的特点是:元素有序(会按照 添加的顺序进行元素的输出),而且可以重复(重复指的是内容一致);Set 的特点是: 元素无序(输出时无序),而且元素不可以重复,存放在 java.util 包。

  1. 1:List 接口的主要实现类: 
  • java.util.ArrayList
  • java.util.LinkedList 
  1. 2:Set 接口的主要实现类: 
  • java.util.HashSet 
  • java.util.LinkedHashSet 
  • java.util.TreeSet (多用于给hashset排序)

1.3 Collection 常用功能

  1. public boolean add(E e):把给定的对象添加到当前集合中
  2. public boolean addAll(Collection c):将指定集合中的所有元素添加到此集合
  3. public void clear():从此集合中删除所有元素
  4. public boolean contains(Object o) :如果集合包含指定元素,则返回 true
  5. public boolean isEmpty():判断是否为空
  6. public Object[] toArray():把集合中的元素,存储到数组中
  7. public boolean remove(Object o):从该集合中删除指定元素的单个实例
package com.day9;

/**
 * @author SFJ
 * @date 2019/11/15
 * @time 21:57
 **/
public class Test1 {
    public static void main(String[] args) {
        Collection c1=new ArrayList();
        c1.add("sangfengjiao");
        c1.add(21);//添加元素到集合中
        System.out.println(c1);
        System.out.println("是否为空:"+c1.isEmpty());
        System.out.println("是否包含:"+c1.contains(1000));
        System.out.println("移除元素:"+c1.remove(21));
        System.out.println("元素的个数:"+c1.size());
        Collection c2=new ArrayList();
        c2.addAll(c1);
        System.out.println(c2);


    }
}

2.1 Iterator 接口

   在程序开发中,经常需要遍历集合的所有元素,JDK 专门提供了一个接口 java.util.Iterator。Iterator 接口是 java 集合中的一员,与 Collection、Map 接口有所不同。Collection与 Map 接口用于存储元素,而Iterator 主要用于迭代访问(即遍历)Collection 中的元素,因此 Iterator 对象也被称为迭代器,想要遍历 Collection 集合,那么就要获取该集合迭代器完成迭代操作。(迭代,即 Collection 集合元素的通用获取方式,在去元素之前先要判断集合中有没有元 素,如果有,就把这个元素取出来再判断,如果还有就继续取出来,一直把集合中所有的元素全部取出)

public Iterator iterator():获取集合对应的迭代器,用来遍历集合中的元素
  1. public E next():返回迭代的下一个元素

public boolean hasNext():如果仍有元素可以迭代,则返回 true

package com.day9;

import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;
/**
 * @author SFJ
 * @date 2019/11/15
 * @time 22:07
 **/

public class Test2 {
    public static void main(String[] args) {
       Collection c1=new ArrayList();
       c1.add("sang");
       c1.add("feng");
       c1.add("jiao");
       System.out.println(c1);
       Iterator it=c1.iterator();//获取集合的迭代器对象
       while(it.hasNext()){
            System.out.println(it.next());
      }
      System.out.println(it.next());///迭代完后继续调用 next 方法会有java.util.NoSuchElementException
    }
}

2.2 迭代器的实现原理

  当遍历集合时,首先通过调用集合的 iterator()方法获取迭代器对象,然后使用 hashNext()方 法判断集合中是否存在下一个元素。如果存在,则调用 next()方法将元素取出,否则说明已 经到达了集合末尾,停止遍历元素。 Iterator 迭代器对象在遍历集合时,内部采用指针的方式来跟踪集合中的元素,为了更好的 理解迭代器的工作原理
  在调用 iterator 的 next()方法之前,迭代器的索引位于第一个元素之前,不指向任何元素。 当第一次调用迭代器的 next 方法后,迭代器的索引会向后移动一位,指向第一个元素并将 该元素返回,当再次调用 next()方法时,迭代器的索引会指向第二个元素并将该元素返回, 直到 hasNext()方法返回 false,表示到集合的末尾,终止元素的遍历

11-16 05:46