集合--Collection与迭代

1.1Collection 集合

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

1.2集合框架

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

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,表示到集合的末尾,终止元素的遍历spa

相关文章
相关标签/搜索