Collection接口与Iterator接口

Collection集合

集合与数组的差异:

  1. 数组的长度是固定的,集合的长度是可变的。
  2. 数组中存储的是同一类型的元素,可以存储基本数据类型值,也可以用来存储对象。集合存储的都是对象,而且对象的类型可以不一致。在开发中,一般当对象多的时候,用集合来存储。

Collection接口:定义的是所有单列集合中共性的方法,所有单列集合都可以使用共性的方法。没有带索引的方法。

集合:Vector集合、ArrayList集合、LinkedList集合、TreeSet集合、HashSet集合、LinkedHashSet集合。

List接口下包含:Vector集合、ArrayList集合、LinkedList集合具有以下共性

  1. 有序的集合(存储和取出顺序相同)。
  2. 允许存储重复的元素。
  3. 有索引,可以使用普通的for循环遍历。

Set接口下包含:TreeSet集合(无序的集合)、HashSet集合(无序的集合)、LinkedHashSet(有序的集合)集合具有以下共性

  1. 不允许存储重复元素
  2. 没有索引(不能使用普通for循环遍历)

List和Set继承了Collection接口。

image-20210724131445573

Collection集合方法

  public boolean add(E e)`:  把给定的对象添加到当前集合中 。
  public void clear()` :清空集合中所有的元素。
  public boolean remove(E e)`: 把给定的对象在当前集合中删除。
  public boolean contains(E e)`: 判断当前集合中是否包含给定的对象。
  publicboolean isEmpty()`: 判断当前集合是否为空。
  public int size()`: 返回集合中元素的个数。
  public Object[] toArray()`: 把集合中的元素,存储到数组中。
public class demo01Collection {
    public static void main(String[] args) {
        //创建一个集合对象
        Collection<String> coll=new ArrayList<>();
        // public Boolean add(E,e);    向集合中添加元素
        coll.add("hello");
        coll.add("world");
        coll.add("heima");
        coll.add("java");

        // public boolean remove(E e)  删除集合中的某个元素
        Boolean result=coll.remove("hello");
        System.out.println(result);//true
        System.out.println(coll);*///[world,heima,java]

        // public void clear() 清空集合所有元素
        //coll.clear();
        //System.out.println(coll);//[]

        boolean contains(E e)   判断集合中是否包含某个元素
        boolean res=coll.contains("world");
        System.out.println(res);//true

        // public boolean isEmpty() 判断集合是否为空
        System.out.println(coll.isEmpty());//false

        // public int size()  获取集合长度
        System.out.println(coll.size());//3

        // public Object[] toArray() 将集合转成一个数组
        Object[] arr=coll.toArray();
        //遍历数组
        for (int i = 0; i <arr.length; i++) {
            System.out.println(arr[i]);
        }
    }
}

Iterator接口

迭代:即Collection集合元素的通用获取方式。在取出元素之前要先判断集合中有没有元素,如果有,就把这个元素取出来,继续再判断,如果还有就再取出来。一直吧集合中的所有元素全部取出。这种取出方式专业术语称迭代

Iterator接口的常用方法:

  1. public boolean hasNext():
    判断集合中还有没有下一个元素,有就返回true,没有就返回false。

  2. public E next() 返回迭代的下一个元素,取出集合中的下一个元素。

    Iterator迭代器是一个接口,我们无法直接使用,需要使用Iterator接口的实现类对象,获取实现类的方式比较特殊。

    Collection接口中有一个方法,叫Iterator(),这个方法返回的就是迭代类实现的对象
    Iterator iterator(),返回在此collection的元素上进行迭代的迭代器。

迭代器的使用步骤:
1、先使用集合中的方法iterator()获取迭代器的实现类对象,使用Iterator接口接收多态
2、使用Iterator接口中的方法hasNext判断还有没有下一个元素
3、使用Iterator接口中的方法next取出集合中的下一个元素

public class demo01Iterator {
    public static void main(String[] args) {

        //创建一个集合对象
       Collection<String> coll = new ArrayList<>();
        //往集合中添加元素
        coll.add("姚明");
        coll.add("科比");
        coll.add("麦迪");
        coll.add("艾弗森");
        coll.add("詹姆斯");
/*1、使用集合中的方法iterator()获取迭代器的实现类对象,使用Iterator接口接收(多态)
    注意:
    Iterator接口也是有泛型的,迭代器的泛型跟着集合走,集合是什么泛型,迭代器就是什么泛型 */
    //     多态     接口      实现类对象
   	 	Iterator<String> it=coll.iterator();
        //2、使用Iterator接口中的方法hasNext判断还有没有下一个元素
        while(it.hasNext()){
        //3.使用Iterator接口的方法next取出集合的下一个元素
            String s = it.next();
        System.out.println(s);}
        System.out.println("========================");
        //1.初始化表达式,获取迭代器  2.布尔表达式,判断有无下一元素  3.步进表达式省略,因				为next()方法会向下移动指针
        for(Iterator<String> it2=coll.iterator();it2.hasNext();){
            String s2=it2.next();
            System.out.println(s2);
        }
    }
}

增强for循环

增强for循环:底层使用的也是迭代器,使用for循环的格式,简化了迭代器的书写
是JDK1.5之后出现的新特性
Collectionextend Iterable:所有的单列集合都可以使用增强for
public interface Iterable实现这个接口允许对象成为"foreach"语句的目标

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

格式:
for(集合/数组的数组类型 变量名;集合名/数组名){System.out.println(s)}

public class StrongFor {
    public static void main(String[] args) {
        demo01();
        demo02();
    }
    //使用增强for循环遍历数组
    private static void demo01(){
        int[] arr={1,2,3,4,5};
        for (int i:arr) {
            System.out.println(i);
        }
    }
    //使用for循环遍历集合
    private static void demo02(){
        ArrayList<String> list=new ArrayList<>();
        list.add("aaa");
        list.add("bbb");
        list.add("ccc");
        list.add("ddd");
        for (String s:list
             ) {
            System.out.println(s);
        }
    }
}
posted @ 2021-07-24 20:26  咸蛋白  阅读(70)  评论(0)    收藏  举报