• java回顾之单列集合、泛型、数据结构


    java回顾之单列集合、泛型、数据结构

    一、collection

    1.1集合概述

    集合的作用:集合是一个容器,可以存储同种类型的多个数据

    集合的特点:集合的长度是可变的,只能存储引用数据类型,不能存储基本数据类型,可以存基本数据类型的包装类



      Collection常用方法

    add:添加      clear:清空    remove:删除某个    contains:是否包含    isEmpty:判断集合是否为空   

    toArray 将集合装成Object[]类型

    二、Iterator迭代器

    2.1迭代器的作用

    帮助Collection集合遍历元素的。用迭代器遍历集合要先获取迭代器的对象

    快捷键:itit

     Collection<String> coll = new ArrayList<>();
            获取迭代器对象
        Iterator<String> it=coll.iterator();
        
        迭代器的方法有  
        next() 获取集合中的元素
        hasNext() 判断集合中有没有下一个元素
        remove()删除当前元素
    
        while(it.hasNext()){
              String s=it.next()
        }    
    

      迭代器原理

    lastRet是下标

    使用迭代器遍历集合会出现并发修改异常,是因为在遍历集合的时候,进行了增删的操作,目前新增无解决办法,删除使用迭代器删除,就可以避免迭代器异常

     //使用循环获取每一个元素
            while(it.hasNext()){
    
                String s = it.next();
                if(s.equals("柳岩")){
                    //使用迭代器对象删除当前元素
                    it.remove();
                }
            }
    

    2.2、增强for循环

    增强for循环也是可以遍历collection集合和数组

    快捷键:iter

    格式
    for(元素的类型 元素名 : 集合/数组){
        
    } 
    好处是简单快捷,缺点是底层也是迭代器,也会出现并发修改异常,而且不能使用索引

    3、泛型

    3.1泛型的作用

    规定了要存储的类型,取出来也方便使用,给集合加上泛型,一看就知道里面的数据是什么类型

    当使用未定义的泛型的时候,只有在调用的时候确定类型     格式:<大写字母>

    比如类上定义泛型格式   

    //泛型代表的是某一种引用数据类型
    public class MyArrayList<T> {
        
    }
    在每次创建对象时确定具体的类型
      //创建对象
            MyArrayList<String> list = new MyArrayList<>();
            //泛型确定为了字符串类型  

    比如方法上定义泛型格式

    在每次调用方法时确定具体类型
    public class AAA {
    
        //方法上定义泛型
        public <T> void method(T t){
        }
    }
     //创建对象
            AAA a = new AAA();
            //调用方法泛型确定为字符串
            a.method("abc");
            //调用方法泛型确定为整数
            a.method(123);

    接口上定义泛型

    //泛型代表某种引用数据类型
    //泛型的定义是在<>写一个大写字母

    public interface MyColl<T> {
    
        void method(T t);
    }
    - 在定义子类时确定泛型具体的类型
    public class MyAAA implements MyColl<String>{
    
        //在子类中确定了泛型的具体类型
        @Override
        public void method(String s) {
    
        }
    }
    - 在子类上不确定具体类型,就把接口的泛型变成类上的泛型
    public class MyBBB<T> implements MyColl<T> {
    
        //重写父类抽象方法
        @Override
        public void method(T t) {
    
        }
    }
    然后在创建对象的时候,确定泛型的类型
      MyBBB<String> mb = new MyBBB<>();
            mb.method("123");
    

    3.2 泛型通配符

    <?> :可以传递任何的泛型类型
    <? extends XXX> :可以传递XXX以及XXX的子类类型
    <? super XXX> :可以传递XXX以及XXX的父类类型

    4、数据结构

    4.1栈和队列

    栈:

      栈是一个线性表结构,只有一个出入口,从同一个口存放数据和移出数据  特点:先入后出

    队列:

      队列也是一个线性表,队列有两个开口,从一边存入数据,从另一边取出数据  特点:先入先出

     数组:数组是在内存中开辟的一块连续的内存空间   特点:增删慢,查询快

     

    链表:链表在内存中时不连续的内存空间,数据结构有单向链表和双向链表,先说单向链表,单向链表的意思就是前一个节点记录后一个节点的位置。特点:增删快,查询慢

  • 相关阅读:
    获取目录下所有文件名
    毕业论文endnote使用
    CoinChange
    sublime3个人配置
    2015-12-31
    2015-12-09
    #define DEBUG用法
    fiddler介绍
    app测试模块
    android SDK_安装配置_使用
  • 原文地址:https://www.cnblogs.com/gushiye/p/13817424.html
Copyright © 2020-2023  润新知