zoukankan      html  css  js  c++  java
  • 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);        
            }    
        }
    }
    
    文章未经本人允许,禁止转载。 有技术问题,可加好友讨论。 联系方式:QQ:MjgxMjMxODAzNQ== 微信:bzNycjByLVhpYW9taW5n
  • 相关阅读:
    感觉博客又要停一停了
    dockManager 添加DockPanel控件
    C# 线性渐变圆
    【Axure】母版引发事件
    【系统问题】windows10打印就蓝屏-报错误代码“win32kfull.sys”
    论扇形的绘制方式
    字符串可以使用substring等方法的原因解析
    深入理解作用域链
    实现fn(1,2)(3)(4).getSum(),使得最后输出值为实参的和即10
    函数里面for循环延迟打印引发的闭包问题
  • 原文地址:https://www.cnblogs.com/Xiaoming0/p/13860968.html
Copyright © 2011-2022 走看看