java学习笔记(day22)

0x00 Collection集合

1.集合概述

集合是java种提供的一种容器,可以用来存储多个数据。

2.集合和数组的区别

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

3.集合使用的两个接口

list接口

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

set接口

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

4.Collection常用功能

java.util.Collection接口是多有单列集合的最顶层的接口,里边定义了所有单列集合共性的方法。任意的单列集合都可以使用Collection接口中的方法。

共性的方法

  1. public boolean add(E e):把给定的对象添加到当前集合中。
  2. public void clear():清空集合中所有的元素。
  3. public boolean remove(E e):把给定的对象在当前集合中删除。
  4. public boolean contains(E e):判断当前集合中是否包含给定的对象。
  5. public boolean isEmpty():判断当前集合是否为空。
  6. public int size():返回集合中元素的个数。
  7. public Object[] toArray():把集合当中的元素存储到数组中。

5.Iterator接口

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

java.util.Iterator接口:迭代器(对集合进行遍历)

有两个常用的方法
boolean hasNext() 如果仍有元素可以迭代,则返回true。
E next() 返回迭代的下一个元素,取出集合的下一个元素。

Iterator迭代器,是一个接口,我们无法直接使用,需要使用Iterator接口的实现类对象,获取实现类的方式比较特殊。
Collection接口中有一个方法,叫iterator(),这个方法就是迭代器的实现类对象。

迭代器的使用步骤【重点】

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

6.迭代器的代码实现

package day22;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;
public class Demo01 {    
    public static void main(String[] args) {       
        //创建一个集合对象        
        Collection<String> coll = new ArrayList<>();       
        //往集合中添加元素        
        coll.add("盖伦");        
        coll.add("赵信");        
        coll.add("嘉文");        
        coll.add("萨科");        
        coll.add("艾希");        
        Iterator<String> it = coll.iterator();        
        //使用循环从集合中拿元素        
        while (it.hasNext()){            
            String e = it.next();            
            System.out.println(e);        
        }//        
        //使用Iterator接口中的方法hasNext判断还有没有下个元素
        //        boolean b = it.hasNext();
       //        System.out.println(b);
       //        String s = it.next();
       //        System.out.println(s);
       //        b = it.hasNext();
       //        System.out.println(b);//        s = it.next();
       //        System.out.println(s);////        b = it.hasNext();
       //        System.out.println(b);//        s = it.next();
       //        System.out.println(s);
       //        b = it.hasNext();
       //        System.out.println(b);
       //        s = it.next();
       //        System.out.println(s);
       //        b = it.hasNext();
       //        System.out.println(b);
       //        s = it.next();
       //        System.out.println(s);
       //        b = it.hasNext();
       //        System.out.println(b);
       //        s = it.next();
       //        System.out.println(s);
       //如果没有元素的情况下还要接着拿,那么就会造成异常。    
   }
}

7.增强for循环

增强for循环(也成for each循环)是JDK1.5以后出来的一个高级for循环,专门用来遍历数组和集合的。它的内部原理其实是个iterator迭代器,所以在遍历的过程中,不能对集合中的元素进行增删操作。

所有的单列集合都可以使用增强for循环,增强for循环的作用就是遍历集合和数组。

格式
for(集合/数组的数据类型 变量名:集合名/数组名){
sout(变量名);

练习1:使用增强for循环遍历数组和集合

package day22;
import java.util.ArrayList;
import java.util.Collection;
public class lianxi1 {    
    public static void main(String[] args) {        
        demo01();        
        demo02();    
     }   
     //使用增强for循环遍历数组    
    private static void demo01(){        
       int[] arr = {1,2,3,4,5,6};        
       for (int i:arr) {            
            System.out.println(i);        
        }    
    }    
    //使用增强for循环遍历集合    
    private static void demo02(){        
        Collection<String> coll = new ArrayList<>();        
        coll.add("卡萨丁");        
        coll.add("卡兹克");        
        coll.add("克格莫");        
        coll.add("希维尔");        
        for (String s:coll) {                       
            System.out.println(s);        
        }    
    }
}
posted @ 2020-10-22 20:58  小明-o3rr0r  阅读(76)  评论(0编辑  收藏  举报